vitus_wagner (
vitus_wagner) wrote2009-09-28 02:58 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Entry tags:
Вьюеры картинок
Почему-то среди широко известных опенсурсных программ нет программы, которая бы позволяла просматривать БОЛЬШИЕ картинки. Под "большой картинкой" здесь понимается растровое изображение таких размеров, что его неупакованное RGB-представление (обычно получается по 32 бита на пиксел, но достаточно и 24) не лезет в оперативную память.
То есть в resource-constrained environments вроде maemo "большой картинкой" будет уже лист А4, отсканированный на 600dpi. На десктопе с гигабайтом жизнь попроще. Но все равно есть вполне полезные вещи вроде graphviz, которые могут сгенерировать картинку, которая будет большой и для десктопа.
Задача, казалось бы элементарно простая - читаем картинку последовательно, пересчитываем координаты пикселов с учетом текущего размера окна, масштаба и выбранного viewport и заполняем offscreen pixmap размером с экран. На неё-то места хватит практически всегда. Это в DOS real mode на копию VESA-шного фреймбуфера в памяти места не хватало. И то вьюеры картинок под DOS писали и они работали.
Оказывается проблема в том, что у современного программиста даже не возникает мысль подойти к задаче системно. Вместо этого ищется готовый инструмент. На освоение которого уходит больше времени и сил, чем на написание вышеописанного простого алгоритма с нуля. Причем, желательно инструмент поуниверсальнее. Берем какой-нибудь GEGL и обнаруживаем что ему для загрузки картинки в свой tiled формат требуется больше места, чем у нас имеется в том, что на нашем девайсе заменяет жесткий диск.
То есть в resource-constrained environments вроде maemo "большой картинкой" будет уже лист А4, отсканированный на 600dpi. На десктопе с гигабайтом жизнь попроще. Но все равно есть вполне полезные вещи вроде graphviz, которые могут сгенерировать картинку, которая будет большой и для десктопа.
Задача, казалось бы элементарно простая - читаем картинку последовательно, пересчитываем координаты пикселов с учетом текущего размера окна, масштаба и выбранного viewport и заполняем offscreen pixmap размером с экран. На неё-то места хватит практически всегда. Это в DOS real mode на копию VESA-шного фреймбуфера в памяти места не хватало. И то вьюеры картинок под DOS писали и они работали.
Оказывается проблема в том, что у современного программиста даже не возникает мысль подойти к задаче системно. Вместо этого ищется готовый инструмент. На освоение которого уходит больше времени и сил, чем на написание вышеописанного простого алгоритма с нуля. Причем, желательно инструмент поуниверсальнее. Берем какой-нибудь GEGL и обнаруживаем что ему для загрузки картинки в свой tiled формат требуется больше места, чем у нас имеется в том, что на нашем девайсе заменяет жесткий диск.
no subject
no subject
Не самая специализированная задача.
(no subject)
(no subject)
(no subject)
no subject
Я вот специально просмотрел все, что есть среди свободного софта. Картина -- ровно как я тебе и описал, и как ты ее сейчас в этом посте и перепечатал. Думать не хотят, фреймворки заруливают всех остальных, задач нет для использования реалистичных алгоритмов. В больших конторах скорее напрягут поправить UI, чтобы он был в соответствии со спецификацией, написанной UI-дизайнером, чем за такие вещи.
Пример с GEGL я привел ровно для того, чтобы продемонстрировать -- даже в библиотеке, в которой заранее была продумана возможность работать с огромной картинкой, все плохо, потому что нет четких спецификаций и задач. Пишут как бы для себя, но в то же время и не для себя, для галочки.
no subject
Метод последовательных приближений, которым это добро развивалось с середины 80-х, себя исчерпал.
Вопрос в том, сколько человеко-лет надо вложить в этот проект (и сопутствующую документацию для разработчиков) чтобы оно начало тотально превосходить существующую экосистему состоящую из фреймворков и кодеров, не умеющих ставить задачи.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Ты готов написать ещё одну реализацию TIFF со всей его тысячью тегов и двумя дестяками интерпритаций “сырых” битмап-данных в зависимости от набора флагов и тегов?
no subject
В libtiff, например, есть TIFFReadScanline, в libjpeg - соответственно
jpeg_read_scanlines.
Поэтому обработку форматов писать не придется. Разве что из соображений пооптимизировать. Например в случает jpeg уменьшении более чем в 8 раз можно очень хорошо пооптимизировать. cjpeg это умеет.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
no subject
no subject
оффтопик
а нельзя ли там премодерацию ввести? а то спам достал.
вот свежий:
http://community.livejournal.com/ru_debian/185147.html
http://community.livejournal.com/ru_debian/185009.html
Re: оффтопик
Re: оффтопик
no subject
no subject
no subject
Фотошоп, например, картинку в 8 гигабайт на 2 Гб ОЗУ показывает хорошо. Но там в ТЗ было такое требование.
no subject
(no subject)
no subject
(no subject)
no subject
no subject
no subject
no subject
Скан поди в tiff?
Хотя может на буке винт медленный, это ведь влияет...
no subject
no subject
no subject
no subject
no subject
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)