vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2009-09-28 02:58 pm

Вьюеры картинок

Почему-то среди широко известных опенсурсных программ нет программы, которая бы позволяла просматривать БОЛЬШИЕ картинки. Под "большой картинкой" здесь понимается растровое изображение таких размеров, что его неупакованное RGB-представление (обычно получается по 32 бита на пиксел, но достаточно и 24) не лезет в оперативную память.

То есть в resource-constrained environments вроде maemo "большой картинкой" будет уже лист А4, отсканированный на 600dpi. На десктопе с гигабайтом жизнь попроще. Но все равно есть вполне полезные вещи вроде graphviz, которые могут сгенерировать картинку, которая будет большой и для десктопа.

Задача, казалось бы элементарно простая - читаем картинку последовательно, пересчитываем координаты пикселов с учетом текущего размера окна, масштаба и выбранного viewport и заполняем offscreen pixmap размером с экран. На неё-то места хватит практически всегда. Это в DOS real mode на копию VESA-шного фреймбуфера в памяти места не хватало. И то вьюеры картинок под DOS писали и они работали.

Оказывается проблема в том, что у современного программиста даже не возникает мысль подойти к задаче системно. Вместо этого ищется готовый инструмент. На освоение которого уходит больше времени и сил, чем на написание вышеописанного простого алгоритма с нуля. Причем, желательно инструмент поуниверсальнее. Берем какой-нибудь GEGL и обнаруживаем что ему для загрузки картинки в свой tiled формат требуется больше места, чем у нас имеется в том, что на нашем девайсе заменяет жесткий диск.

[identity profile] grundik.livejournal.com 2009-09-28 03:26 pm (UTC)(link)
Ну это, если требований нет, то почему надо тратить своё (и тестерское) время на это? ;)
Фотошоп, например, картинку в 8 гигабайт на 2 Гб ОЗУ показывает хорошо. Но там в ТЗ было такое требование.

[identity profile] grundik.livejournal.com 2009-09-29 12:28 am (UTC)(link)
Ну, в порядке самовыражения - это да. Но, подозреваю, те люди, которые на это способны, пишут другой софт, не opensource, и самовыражаются там.

[identity profile] captain-hell.livejournal.com 2009-09-28 08:04 pm (UTC)(link)
у меня полтора гигабайта очень медленно открывается и работает.

[identity profile] grundik.livejournal.com 2009-09-29 12:38 am (UTC)(link)
Windows Vista, c2d 8600, nvidia 8600, 4Gb RAM, CS3 - панораму в 12Gb (PSD-файл именно такого размера) вполне можно обрабатывать. Просмотр - почти не тормозит, остальные операции (crop, resize, levels) - тормозят (но тут неизвестно в чём дело, может обработка слоёв виновата, ибо это expensive operation).