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

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

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

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

Date: 2009-09-28 11:44 am (UTC)
abbra: (Default)
From: [personal profile] abbra
Витус, напиши сам. :)

Я вот специально просмотрел все, что есть среди свободного софта. Картина -- ровно как я тебе и описал, и как ты ее сейчас в этом посте и перепечатал. Думать не хотят, фреймворки заруливают всех остальных, задач нет для использования реалистичных алгоритмов. В больших конторах скорее напрягут поправить UI, чтобы он был в соответствии со спецификацией, написанной UI-дизайнером, чем за такие вещи.

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

Date: 2009-09-28 12:09 pm (UTC)
andrzejn: (Default)
From: [personal profile] andrzejn
Живо вспоминается "зрелая среда программирования" в описании В.Винджа.

Date: 2009-09-28 12:41 pm (UTC)
abbra: (Default)
From: [personal profile] abbra
Вопрос чисто экономический -- найди проект, где это переписывание будет экономически выгодно и дело в шляпе.

Date: 2009-09-28 03:03 pm (UTC)
From: [identity profile] deztructor.livejournal.com
У меня когда-то в одной конторе (2000 год) был такой проект: смысл его - оцифровка всей бумажной документации различными путями, основные клиенты - конторы с большим запасом чертежей форматов A1 и больше. Использовал замечательный activex компонент (image gear, если помню правильно), который как раз быстро и качественно с минимальным использованием памяти загружал, масштабировал, двигал картинку в окне просмотра (очень шустро). Вот тут-то это и будет экономически выгодно.

Date: 2009-09-28 04:32 pm (UTC)
abbra: (Default)
From: [personal profile] abbra
Именно, нигде их и не найти. Всем нужно краткосрочное решение.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

June 2025

S M T W T F S
1 23 4 56 7
89 1011 12 1314
15161718192021
22232425262728
2930     

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 13th, 2025 03:47 pm
Powered by Dreamwidth Studios