代码之家  ›  专栏  ›  技术社区  ›  Vince

创建灰度图像

  •  8
  • Vince  · 技术社区  · 15 年前

    我正在从一个文件中读取二进制数据,该文件指定x和y坐标上的强度值(不是开源图像格式),并希望将其转换为png图像(或其他广泛支持的格式)。我将数据加载到一个数组中(使用array模块),其中每个元素都是0到255之间的整数。要将其保存为png,我可以为每个元素(x)创建一个3项元组,如下所示:

    t = (x, x, x)
    

    使用map()在数组中添加apply,然后使用putdata()保存图像。但是,转换为元组数组需要很长时间(几分钟)。有没有办法只用一个整数(不是元组)来指定rgb值。我猜另一个选择是使用numpy,但我不知道从哪里开始,所以在这方面的任何帮助也将不胜感激。

    提前谢谢你的帮助。

    3 回复  |  直到 15 年前
        1
  •  12
  •   Nadia Alramli    15 年前

    创建新图像时,将其设置为模式l:

    im = Image.new('L', size)
    im.putdata([x1, x2, x3, ...])
    

    其中数据是值的列表,而不是元组。

        2
  •  3
  •   tkerwin    15 年前

    有几种方法可以做到这一点,但是如果您已经将数据存储在内存中,请使用 Image.frombuffer Image.fromstring 使用 'L' 模式(用于8位灰度数据)。

        3
  •  0
  •   David Sowsy    15 年前

    你要找的是im.putpixel(xy,colour)吗?