我试图用 PIL/Pillow 输出一个生成的大图像,但是当图像尺寸变大时它会中断。
因此,根据我在 SO 上阅读的内容,我正在尝试使用 Vips。
我生成的数据是一个 RGB 值的 numpy 数组。我想将其转换为 Vips 中的图像,以便保存。但是我无法弄清楚如何将像素数据输入 Vips。
import numpy
import gi
gi.require_version('Vips', '8.0')
from gi.repository import Vips
WIDTH=32768
HEIGHT=32768
UCHAR=Vips.BandFormat.UCHAR
# Create an RGB black image
black_space = numpy.zeros( ( WIDTH, HEIGHT, 3 ), dtype=numpy.uint8 )
# this doesn't work
vips_image = Vips.Image.new_from_memory( black_space, WIDTH, HEIGHT, bands=3, format=UCHAR )
vips_image.write_to_file( "space_32k.tiff" )
当然,它在创建 Vips 图像时失败并出现错误:
Traceback (most recent call last):
File "./bad_vips.py", line 14, in <module>
vips_image = Vips.Image.new_from_memory( black_space, WIDTH, HEIGHT, bands=3, format=UCHAR )
TypeError: Item 0: expected int argument
有没有办法转换 numpy 数组以便它与 Vips 一起使用?
我也试过通过black_space.data
,但后来我得到:
NotImplementedError: Item 0: multi-dimensional sub-views are not implemented