从二维像素值数组创建灰度图像

Creating a gray-scale image from an 2D array of pixel values

我正在尝试更改灰度 PNG 图像的值,然后根据这些更改后的值创建图像。

我采取的第一步是使用 python implementation of libpng。 这样我就能够获得 PNG 的所有像素值的列表。这是一个灰度图像,所以值从 0 到 100。我做了一个快速算法来更改值。然后我尝试将它创建到一个新的 PNG 文件中。它全部在一行中,所以我使用正则表达式将其格式化为二维数组。

我试图使用我发现的这个 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 中找到一些允许我直接更改值并创建新文件的东西。

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