我有一个python脚本,它将图像作为输入并为图像添加一些效果。添加效果后,我正在保存图像,这给了我100%正确的结果。但是,如果img.show()对于之前保存的相同Image,它会显示输入Image而不是效果添加Image。代码如下:
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 :(得分:1)
我猜它是因为两次都没有使用相同的图像查看器。 img.show()使用一些不同的图像查看器。使用相同的图像查看器尝试两次打开顶部。
答案 1 :(得分:0)
我认为奇怪的是,您显示的图像与原始图像完全相同,但保存的图像不是。您从变量img2
设置arr
,该变量取自img1
,然后从未更改过。您应该在创建arr[:,:,3] = alpha
之前设置img2
。
示例:
>>> 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]])