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

标签 python png python-imaging-library libpng

我正在尝试更改灰度 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')那么你的代码就可以工作了。

关于python - 从二维像素值数组创建灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58546712/

相关文章:

python - 在 django 中为每种站点语言设置单独的子域

c# - 调整 PNG 图像大小,而不丢失完全透明像素的颜色数据

CSS3/HTML 5/PNG 模糊元素后面的内容

python - 将 pandas 数据帧转换为位图的更有效方法是什么?

python - PIL 将具有透明度的 PNG 或 GIF 转换为没有透明度的 JPG

python - 如何将 PIL 图像转换为 NumPy 数组?

python 3 : How to best iterate over all lines in a big file (+1 million lines) in a random order

python - 如何在 ttk Treeview 小部件中将文本右对齐?

python - 尝试在 OS X (10.11.3) 上安装 PyAudio

java - 在图像中嵌入代码