2016-08-01 23 views
1

Ich habe ein Python-Skript, das ein Bild als Eingabe nimmt und einen Effekt zum Bild hinzufügt. Nach dem Hinzufügen des Effekts speichere ich das Bild, was mir ein 100% korrektes Ergebnis gibt. Aber wenn img.show() für das gleiche Bild, das ich zuvor gespeichert habe, zeigt es mir Bild anstelle von Effekt Bild hinzugefügt. Code ist unterImage.save() und Image.show() gibt anderes Ergebnis für dasselbe Bild

import numpy as np 
from PIL import Image 

img = Image.open("1.png").convert('RGBA') 
arr = np.array(img) 
alpha = arr[:, :, 3] 
n = len(alpha) 
alpha[:] = np.interp(np.arange(n), [0, 0.55*n, 0.75*n, n], [255, 255, 0, 0])[:,np.newaxis] 
img = Image.fromarray(arr, mode='RGBA') 
img.save("2.png") 
img.show() 

Antwort

0

Ich vermute es, weil der gleiche Bildbetrachter in beiden Zeiten nicht verwendet wird. img.show() verwendet einen anderen Bildbetrachter. Versuchen Sie beide Male mit dem gleichen Bildbetrachter oben zu öffnen.

+0

Thnaks viel. du hattest Recht. –

0

Ich denke, die seltsame Sache ist nicht, dass Ihr gezeigtes Bild identisch mit dem Originalbild ist, aber das Ihr gespeichertes Bild nicht ist. Sie setzen img2 aus der Variablen arr, die aus img1 übernommen und dann nie geändert wurde. Sie sollten festlegen, bevor Sie img2 erstellen.

Beispiel:

>>> import numpy as np 
>>> a = np.array([[1,1],[2,2]]) 
>>> a 
array([[1, 1], 
     [2, 2]]) 
>>> b = a[:,1] 
>>> b 
array([1, 2]) 
>>> b = [0,3] 
>>> a 
array([[1, 1], 
     [2, 2]]) 
>>> a[:,1] = b 
>>> a 
array([[1, 0], 
     [2, 3]]) 
+0

Das getan. Aber immer noch dasselbe Problem. –