【问题标题】:How do I directly turn an array of pixels into an image with PIL in python?python - 如何在python中使用PIL直接将像素数组转换为图像?
【发布时间】:2020-12-15 05:49:12
【问题描述】:

所以我记得以前这样做过,但愚蠢的是我再也找不到我的代码了。我像这样从 png 中提取我的数组:

from PIL import Image, ImageDraw
im = Image.open('img1.png', 'r')
width, height = im.size

val= list(im.getdata())

然后我想手动更改几个像素。

val[100] = (0,255,0,255)

我虽然在此之前有一种方法可以使用更新的列表再次简单地创建图像。 我找到了“Image.fromarray()”,但它想要一个数组而不是列表,我无法让它工作。

我敢肯定,以前它非常简单,并且有一些方法可以编辑列表中的单个像素并将它们放回图像中 img.save("editedimg.png")

有人知道我需要使用什么吗? 非常感谢您的帮助,下次我将备份我的代码! ????

【问题讨论】:

  • 为什么不把 im.getdata 结果作为一个数组直接使用呢?

标签: python python-3.x image-processing python-imaging-library


【解决方案1】:

这是一个非常棒的问题。让我为你解答。

我终于找到了。

您需要“putdata()”函数。在更改 val 列表后添加这些行:

im2 = Image.new(im.mode, im.size)
im2.putdata(val)
im2.save('new.png')

【讨论】:

  • 哇,谢谢!这正是我正在寻找的。感谢您为我节省了 10 个小时,否则我可能会花在寻找答案上。 ?
猜你喜欢
  • 2016-12-21
  • 1970-01-01
  • 2014-05-21
  • 2012-11-14
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 2010-09-27
  • 2015-07-11
相关资源
最近更新 更多