LINUX.ORG.RU

Библиотека для чтения сверхгигантских фотографий


0

0

Я имею в виду фотографии более 10 мегапикселей. В обычных фотовьюерах открыаются такие фотки слишком долго.

Также при просмотре 10 мегапиксельной фотки расходуется почти более 400 MB памяти.

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

Ну я конечно уже нашёл одну библиотеку. Она называется GDAL. Но хотелось посоветоваться с вами. Возможно существуют другие либрариес.

Прошу подсказать.

Ответ на: комментарий от anon_666

iv (ImageViewer) настроил на использование только 128 MB и попытался открыть файл размером 9460x7445 пикселов. iv съел всю память и чуть не подвесил систему.

xcreatepixmap
() автор топика

http://www.imagemagick.org/Magick++/ Использую для сохранения картинок. Максимум пробовал - 600pdi A4 (5100x7000) - сохраняет очень шустро. Она и заточена как раз НЕ под интерактивность. Загрузит тоже быстро. Для вывода на экран есть какая-то x11 функция.

rip86oz
()

nip2/vips. Одно библиотека, другое gui морда для нее - я ей не напрягаясь грузил огромные панорамы - в gui даже видно как они по кускам грузятся. Кроме того, умеет обрабатывать изображения - цветокоррекция и т.д.

slovazap ★★★★★
()
Ответ на: комментарий от xcreatepixmap

Думаю это iv (ImageViewer) кривой. А библиотеку я проверю попозже.

xcreatepixmap
() автор топика
Ответ на: комментарий от anon_666

Может читать по строчно, но всю строку разом. Невозможно выбрать часть строки.

При этом нужно в некоторых случаях, когда невозможно сразу получить строку, нужно самому перечитывать некие соседние строки подряд.

Может читать тайлы. Тайлы это блоки, прямоугольные участки. Формат файла должен поддерживать блоки. Например из Tiled TIFF.

Вобщем эта библиотека подходит лишь для узких картинок с маленькой шириной и растянутых в высоту.

xcreatepixmap
() автор топика
Ответ на: комментарий от slovazap

Она может читать по частям из файла. Но обязательно полностью распаковывает всю картинку в TMP по сотни мегабайт.

Единственный формат который она может читать напрямую без временного файла это Tiled TIFF.

xcreatepixmap
() автор топика

Значит пока что единственная подходящая библиотека для меня это http://www.gdal.org/.

Может без временных файлов. Может дать любую строку и любого отрезка.

xcreatepixmap
() автор топика
Ответ на: комментарий от xcreatepixmap

А ей можно делать превьюшки? Скажем, взять картинку 15000х45000 метров на 100, произвольного формата (обычно jpeg/gif/png) и получить из нее превьюшку 150х450 пикселей? Или оверкилл для нее?

simple_best_world_web_master
()
Ответ на: комментарий от xcreatepixmap

А как при этом с производительностью/потреблением оперативки? Есть какие-то сравнительные тесты? ImageMagick на подобных картинках способен отожрать пару гигов оперативки и столько же свопа, что мягко говоря неприятно для хостинга и поточного преобразования.

simple_best_world_web_master
()
Ответ на: комментарий от simple_best_world_web_master
CPU 1.5 GHz
cores = 1

RAM Cache = 41 943 040 Byte

700x4625x3
Time = 1.322 sec
Temp OVR = 98534 byte

16015x7660x3
Time = 56.421 sec
Temp OVR = 121830 byte

Исходник примера http://ifolder.ru/19045799

xcreatepixmap
() автор топика
Ответ на: комментарий от simple_best_world_web_master

Оказывается в составе GDAL уже есть готовая утилита для создания миниатюр.

Usage: gdaladdo [-r {nearest,average,gauss,cubic,average_mp,average_magphase,mode}]
                [-ro] [-clean] [-q] [--help-general] filename levels

  -r : choice of resampling method (default: nearest)
  -ro : open the dataset in read-only mode, in order to generate
        external overview (for GeoTIFF datasets especially)
  -clean : remove all overviews
  -q : turn off progress display
  filename: The file to build overviews for (or whose overviews must be removed).
  levels: A list of integral overview levels to build. Ignored with -clean option.

Usefull configuration variables :
  --config USE_RRD YES : Use Erdas Imagine format (.aux) as overview format.
Below, only for external overviews in GeoTIFF format:
  --config COMPRESS_OVERVIEW {JPEG,LZW,PACKBITS,DEFLATE} : TIFF compression
  --config PHOTOMETRIC_OVERVIEW {RGB,YCBCR,...} : TIFF photometric interp.
  --config INTERLEAVE_OVERVIEW {PIXEL|BAND} : TIFF interleaving method
  --config BIGTIFF_OVERVIEW {IF_NEEDED|IF_SAFER|YES|NO} : is BigTIFF used

Examples:
 % gdaladdo -r average abc.tif 2 4 8 16
 % gdaladdo --config COMPRESS_OVERVIEW JPEG
             --config PHOTOMETRIC_OVERVIEW YCBCR
             --config INTERLEAVE_OVERVIEW PIXEL -ro abc.tif 2 4 8 16

Но у неё нет настроек размера кеша.

Она создаёт миниатюру Ovr рядом с картинкой. Файл Ovr это картинка в формате TIFF.

xcreatepixmap
() автор топика
Ответ на: комментарий от xcreatepixmap

level высчитывается путём деления ширины (или высоты) на результирующую ширину.

1200 / 200 = 6

xcreatepixmap
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.