我正在尝试从灰度PNG图像更改值,然后根据这些更改的值创建图像。
我采取的第一步是使用python implementation of libpng。 这样我就可以得到所有PNG像素值的列表。这是灰度图像,因此值在0到100之间。我执行了一种快速算法来更改这些值。然后,我尝试将其创建到新的PNG文件中。它全部在一行上,因此我使用正则表达式将其格式化为2D数组。
我尝试使用我发现的here
from PIL import Image
import numpy as np
pixels = [[100,0,0],[0,100,0],[0,0,100]]
# Convert the pixels into an array using numpy
array = np.array(pixels)
print(array)
# Use PIL to create an image from the new array of pixels
new_image = Image.fromarray(array, 'L')
new_image.save('testing.png')
但是我想PIL使用的格式与libpng的格式不同,因此与其使图像对角线看起来像3个白色像素,我在左上角仅得到1个白色像素。因此,要么更改从libpng中获取的值以使numpy正常工作,要么在libpng中找到可以直接更改值并创建新文件的内容。
答案 0 :(得分:1)
代码中的错误是您没有为数组设置正确的数据类型。如果您致电array = np.array(pixels, dtype='uint8')
,则您的代码将可用。