Я пытался вывести большое сгенерированное изображение с помощью PIL / Pillow, но оно ломалось, когда размеры изображений становились больше.
Так что, исходя из того, что я читаю на SO, я пытаюсь использовать Vips.
Мои сгенерированные данные являются массивом значений RGB.Я хочу преобразовать это в изображение в 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