2016-08-01 81 views
1

我有一个python脚本,它将图像作为输入并为图像添加一些效果。添加效果后,我保存图像,这给了我100%正确的结果。但如果做img.show()为我以前保存相同的图像它显示我输入图像,而不是效果添加图像。代码在下面给出Image.save()和Image.show()给出不同的结果对于相同的图像

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() 

回答

0

我猜测它是因为两次都没有使用相同的图像查看器。 img.show()使用一些不同的图像查看器。使用相同的图像查看器尝试两次打开顶部。

+0

Thnaks很多。你是对的。 –

0

我觉得奇怪的事情并不是你的显示图像与原始图像相同,而是你保存的图像不是。您正在设置img2来自变量arr,取自img1,然后从未更改过。在创建img2之前,您应该设置arr[:,:,3] = alpha

实施例:

>>> 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

做到了。但仍然得到同样的问题。 –

相关问题