Быстрый способ использования изображения VIPS в качестве QImage

Мне нужно работать с мозаичными изображениями в Qt. Что было бы быстрым способом преобразования между двумя объектами или иным образом с использованием изображения VIPS в методах QImage? Одним из решений было бы сохранить изображение VIPS как файл TIFF или любой другой формат изображения в Qt, а затем загрузить файлы как QImages. Мне пришлось бы делать это для 20+ плиток на лету, поэтому я не сохраняю изображения, так как файлы были бы достаточно быстрым процессом.


person CrippledTable    schedule 17.08.2017    source источник
comment
Если образ VIPS предоставляет необработанные данные и имеет какой-либо совместимый формат (относительно QImage), вы можете использовать необработанные данные изображения VIPS в QImage напрямую. Конечно, вы должны быть немного осторожны в отношении времени жизни экземпляров изображения. Недавно я написал ответ о QImage и его данных: SO: создание ARGB QImage из массива uint32 или uchar, что может быть полезно.   -  person Scheff's Cat    schedule 17.08.2017
comment
Интересно, так что я мог бы преобразовать изображение VIPS в целое число, а затем потенциально использовать код в этой ссылке для создания QImage?   -  person CrippledTable    schedule 17.08.2017


Ответы (1)


Вот крошечный (300 строк) пример программы:

https://github.com/jcupitt/vipsdisp-tiny

Это отображает результат конвейера libvips в окне. Он использует gtk+ и Cairo, но его легко адаптировать для QImage.

Это интересно, потому что это асинхронно. Конвейер libvips будет работать в наборе фоновых потоков, и тайлы будут прорисовываться по мере их вычисления. Он может отображать огромные изображения и сложные вычисления, а интерфейс остается отзывчивым.

Вот то же самое, но как чуть более полный просмотрщик изображений:

https://github.com/jcupitt/vipsdisp

С зумом и все такое. Опять же, он использует gtk3, но идеи должны легко переноситься на Qt. Нужно еще немного поработать, надо найти время.

person jcupitt    schedule 17.08.2017