根据2D像素值数组创建灰度图像

时间:2019-10-24 17:49:23

标签: python png python-imaging-library libpng

我正在尝试从灰度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中找到可以直接更改值并创建新文件的内容。

1 个答案:

答案 0 :(得分:1)

代码中的错误是您没有为数组设置正确的数据类型。如果您致电array = np.array(pixels, dtype='uint8'),则您的代码将可用。