python - 在 Python 中从离散像素值绘制图像的最快方法是什么?

标签 python image python-imaging-library

我希望根据计算的像素值绘制图像,作为可视化某些数据的一种方式。本质上,我希望获取一个二维矩阵的颜色三元组并渲染它。

请注意,这不是图像处理,因为我没有对现有图像进行转换,也没有对整个图像进行任何类型的转换,而且它也不是矢量图,因为图像没有预先确定的结构。 m 渲染 - 我可能会一次生成一个像素的无定形颜色 Blob 。

我现在需要渲染大约 1kx1k 像素的图像,但可扩展的东西会很有用。最终目标格式为 PNG 或任何其他无损格式。

我目前一直在通过 ImageDraw 的 draw.point 使用 PIL,我想知道,鉴于我需要的非常具体且相对基本的功能,是否有更快的库可用?

最佳答案

如果你有 numpyscipy 可用(如果你在 Python 中操作大型数组,我会推荐它们),那么 scipy.misc.pilutil.toimage功能非常得心应手。 一个简单的例子:

import numpy as np
import scipy.misc as smp

# Create a 1024x1024x3 array of 8 bit unsigned integers
data = np.zeros( (1024,1024,3), dtype=np.uint8 )

data[512,512] = [254,0,0]       # Makes the middle pixel red
data[512,513] = [0,0,255]       # Makes the next pixel blue

img = smp.toimage( data )       # Create a PIL image
img.show()                      # View in default viewer

好消息是 toimage 可以很好地处理不同的数据类型,因此 float 的二维数组可以明智地转换为灰度等。

您可以从 here 下载 numpyscipy .或者使用 pip:

pip install numpy scipy

关于python - 在 Python 中从离散像素值绘制图像的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434583/

相关文章:

python - pandas 在不同大小的 2 个表(1 个聚合表)之间执行划分

python - 操作系统级的改变可以加速 Python 的多重处理?

linux - ImageMagick:如何在调整大量图像文件大小时实现低内存使用?

java - 图像尺寸变小

python - 在Python中更改像素颜色: How to do it faster?

python-imaging-library - 如何使用PIL访问和更改颜色 channel ?

Python - 来自 CSV 文件的字典,每个键有多个值

python - 模拟 xlsxwriter 中的自动调整列

Java - 如何以可移植的方式加载图像? (即不指定绝对地址?)

python - PIL 并不总是为 PNG 使用 3 个 channel