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] potan.livejournal.com 2009-09-28 11:48 am (UTC)(link)
Вьюер - это программа, которая кроме просмотра картинок больше ни чего делать не умеет?

[identity profile] potan.livejournal.com 2009-09-28 12:44 pm (UTC)(link)
А что еще разрешено уметь делать вьюеру?
Чем nip2 не вьюер?

[identity profile] blacklion.livejournal.com 2009-09-28 03:21 pm (UTC)(link)
nip2 — это интерфейс к очень хитрой бибилиотеке, которая как раз рассчитана на обработку мега-больших картинок в пактеном режиме. nip2 — GUI для составления того самого пакетного задания.

[identity profile] blacklion.livejournal.com 2009-09-28 04:28 pm (UTC)(link)
при этом библиотека умеет быстро и адекватно показывать результаты на картинке отресайзеной до разумных разрешений, вот ещё особенность.

[identity profile] bigrasta.livejournal.com 2009-09-28 04:52 pm (UTC)(link)
да я то знаю)

[identity profile] blacklion.livejournal.com 2009-09-28 05:42 pm (UTC)(link)
Я последний раз его запускал года 3 а то и 4 назад… Нифига уже не помню. Там вон вроде бОльшие знаткои имеются в комментариях :)

[identity profile] potan.livejournal.com 2009-09-29 11:30 am (UTC)(link)
Если в настройках поставить галочку "Auto image window pop up", то он сразу картинку показывает.