2016-08-01 82 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

做到了。但仍然得到同樣的問題。 –

相關問題