Программа для изготовления иллюстраций с прозрачным фоном

(Зеркала топа - здесь и тут)

2010/07/03 Ура, свершилось! :-) Я таки сделал программу для изготовления прозрачных картинок. Вот она: limpng - limpid PNG convertor v1.0 - прошу любить и жаловать, скачивать и пробовать, хаять и предлагать! :-)
Что может? А очень много чего:

  • переводить чёрно-белые и серые картинки в формате PNG в прозрачный вид по ранее (ниже)описанному алгоритму;
  • то же самое проделывать и с цветными картинками (понятно, не настолько гладко - полностью прозрачное не может быть цветным, иначе его не будет видно, цветное оно или нет; но какие-то пропорции всё ж сохраняются);
  • делать полупрозрачные картинки - сквозь которые фон просвечивается, но не в полную силу; степень прозрачности регулируется;
  • делать "классическую" (ступенчатую) прозрачность, т.е. какие-то самые яркие участки картинки будут полностью прозрачны, а всё остальное остаётся полностью непрозрачным - а-ля аппликация или спрайтовая графика; порог прозрачности, опять же, можно задавать;
  • в качестве исходных принимать любые прозрачные, непрозрачные, полупрозрачные и частично прозрачные картинки, в т.ч. полученные любыми программами, а не только этой;
  • восстанавливать исходные непрозрачные картинки из любых вышеперечисленных - а если они "опрозрачнивались именно этой программой и после того ничем не редактировались и ничем, кроме optipng, не конвертировались, то гарантируется точное побитное восстановление вместе с восстановлением имени файла;
  • проделывать все вышеперечисленные действия с любыми степенями и порогами прозрачности над неограниченным количеством файлов в один заход.
  • (А в следующей версии будет ещё и выборочное "опрозрачнивание" участков рисунка по заданной пользователем маске! - загвоздка только в выборе способа кодирования желаемой прозрачности, чтобы пользователю было удобно задавать маску любым графическим редактором вплоть до micro$oft paint'а.)

Как уже, наверно, многие догадались, :-) limpng - консольная программа и управляется параметрами в командной строке. При запуске без параметров или с параметром -h программа рассказывает о себе :-) и даёт список управляющих параметров - пока только по-английски, а вот несколько сокращённый перевод:

Цитата:
limpng - limpid PNG convertor, версия, дата
Вдохновлено Либрусеком и Флибустой
Использование:
limpng [ опции ] файл(ы) [ ... ]
Файлы:
изображения в формате PNG
Опции:
-h - эта подсказка;
-q - режим "молчун" (выдаются только сообщения об ошибках);
-v - режим "болтун" (полезно, когда что-то идёт не так и хочется узнать причины происходящего);
-n - НЕ метить выходные файлы специальной меткой; иногда может способствовать уменьшению их размеров, что НЕ позволяет в дальнейшем восстанавливать из них исходные изображения опцией -r;
-t <число> - уровень прозрачности (0..255); 0 даёт непрозрачную картинку, 255 - полностью прозрачную в белом и непрозрачную в чёрном; все пиксели получают степень прозрачности, пропорциональную их яркости; можно задавать опцию сколько угодно раз с разными значениями уровня;
-s <число> - порог ступенчатой прозрачности (0..256): пикселы с яркостью меньше порога будут непрозрачными, а от порога и выше - полностью прозрачными; при этом их исходные значения сохраняются в выходном файле и могут быть восстановлены, если не задана опция -n; опять же, можно задавать сколько угодно раз с разными значениями порога;
-r - восстановление оригинальной непрозрачной картинки (аналогично опциям -t 0 или -s 256); восстановленная картинка будет сохранена в файле с именем, из которого была получена восстанавливаемая, если это было не с опцией -n;
-d <выходной-каталог> - записывать полученные файлы в отдельный выходной каталог вместо исходного;
-w - перед завершением работы ждать нажатия клавиши, чтобы пользователь мог убедиться в отсутствии (или наличии) ошибок выполнения.
------------
Выходные файлы, сделанные из каждого исходного <filename>.<ext>, получают имена вида <filename>-<режим>[<уровень>].<ext> (например, из test.png можно получить test-r.png и test-s128.png).
Если не была задана опция -n, все преобразования обратимы; но некоторые ступенчато-прозрачные картинки могут "испортиться" и не годиться к восстановлению, если преобразование выполнялось с -n или файл впоследствии обрабатывался ещё какими-то преобразователями, оптимизаторами или графическими редакторами.

Примеры запуска программы:
limpng -t 255 -s 255 -s 240 -s 200 -s 100 image1.png image2.png -
из каждого исходного файла сгенерирует пять файлов:
image1-t255.png и image2-t255.png - прозрачные по ранее предложенному типу;
image1-s255.png и image2-s255.png - "классически" прозрачные в чисто-белых областях;
image1-s240.png и image2-s240.png - "классически" прозрачные в областях белых и почти белых (чуточку темноватых или белых чуточку подкрашенных);
image1-s200.png и image2-s200.png - серьёзно "побитые" прозрачностью (могут пострадать лица, особенно глаза/зубы, а также яркие детали одежды, небо, детали мебели и много чего ещё);
image1-s100.png и image2-s100.png - бо́льшая часть поля будет прозрачной, уцелеют только штаны-пиджаки-ботинки и тёмные волосы. :-)
limpng -d original -r image1-s100.png и image2-t255.png -
в каталог по имени original (если такой, конечно, существует) будут восстановлены непрозрачные оригиналы исходных файлов (в нашем случае это original\image1.png и original\image2.png).

Уфф! Вроде ничего не забыл.
...хотя да - ещё остался вопрос с исходными текстами программы. Хм. Выложу. Не прямо сейчас: в них слишком много обрывков, недореализованных и отброшенных фишек, комментов матом и прочей шелухи - не то чтобы "стыдно людям показать", но... В общем, выложу под лицензией GNU GPL, если кто расскажет, как это правильно сделать, или покажет, где это внятно расписано.
Upd 2010-07-05: уже.

(тут прежнее содержимое стартового поста)
Об изготовлении иллюстраций с прозрачным фоном
Придумал ещё один способ делать чёрно-белые (точнее, 256-серые) иллюстрации с прозрачностью. В отличие от "классического" способа, не увеличивает размер файла с картинкой, в принципе не даёт паразитных ореолов и не требует установки громоздкого проприетарного софта - все компоненты open source'ныe.
Базовая идея проста как дрова: вместо выбора "прозрачного" цвета воспользоваться альфа-каналом, а чтобы не было ореольчиков - изображение держать только в альфа-канале, а то, что обычно считается изображением, сделать полностью чёрным.

Итак, берём исходную картинку (если кто не узнал - это фрагмент иллюстрации к сборнику юморесок Остапа Вишни "Самостійна дірка"):

Рис. 1 написал:

Поскольку мы собираемся делать прозрачным фон (белые участки), а в альфа-канале прозрачно как раз чёрное, то первым делом сделаем негатив:
Рис. 2 написал:

и картинку с чёрной заливкой:
Рис. 3 написал:

Теперь осталось собрать одно с другим в правильном порядке - и вуаля:
Рис. 4 написал:

В результате мы получили изображение с прозрачным фоном, гарантированно не дающее ореолов. Вот так оно выглядит, к примеру, на оранжевом (256-128-0) фоне:
Рис. 5 написал:

Сомневающихся прошу сохранить рис. 4 и посмотреть его любым вьюером на сколь угодно тёмном фоне, вплоть до чёрного, :-) и убедиться.

Теперь две ложки дёгтя. Первая: я знаю только одну софтинку, способную проделать все эти операции (особенно финальную сборку) в едином технологическом цикле: скриптовый видеоредактор-фреймсервер Avisynth. Зато он позволяет проделать всё вышеперечисленное без излишних телодвижений - попросту выполняя скрипт:

function make_transparent( string name, string outname ) {
	imagesource( name, 0, 0, pixel_type="rgb32" ) # делаем из картинки видеоролик длиной в один кадр
	invert() # получаем негатив
#	resetmask().imagewriter( outname + ".negative.", type="png" ) # - можно сохранить в файл
	inv = last # запоминаем этот видеопоток, пригодится
	inv.blankclip() # делаем чёрную картинку
#	subtitle( "Не поддерживается!", align=1,text_color=$00FFFFFF, halo_color=$FF000000 )
#	resetmask().imagewriter( outname + ".black.", type="png" ) # - тоже можно сохранить
	last.mask( inv ) # собираем в цельную картинку
	imagewriter( outname + ".", type="png" ) # и сохраняем в файл
	showalpha().invert() # просто для удобства - чтобы плеер вывел исходную картинку
}

# вызов функции: первый параметр - полное имя исходного файла,
# второй - имя (без расширения) для выходного:
make_transparent( "original.png", "transparent" )

# а вот так можно одним вызовом преобразовать несколько файлов сразу:
#make_transparent( "image1.png", "out1" ) + \
#make_transparent( "image2.png", "out2" ) + \
#make_transparent( "image3.png", "out3" ) + \
#make_transparent( "image4.png", "out4" ) + \
#make_transparent( "image5.png", "out5" ) + \
#make_transparent( "image6.png", "out6" )
(Ё-пс! Буковки "<br />" в конце каждой строки - паразитные, их переносить в скрипт не надо!)
Для запуска скрипта на выполнение его следует "проиграть" любым видеоплеером (разумеется, при установленном Avisynt'е); для отладки хорошо использовать видеоредактор VirtualDubMod - скрипт открывается как видеофайл, а по Ctrl-E появляется удобное окно редактирования скрипта.
Вторая: в принципе можно себе представить как вьюер картинок, так и FB2-вьюер, в принципе не поддерживающие .png-файлы с масками; пользователи таких программ увидят вместо картинки просто чёрный прямоугольник. Специально на такой случай в скрипте есть (закомментирована) строка, выводящая поверх чёрного надпись "Не поддерживается!". Вот так в нашем случае выглядит чёрный прямоугольник с этой надписью:
Рис. 6 написал:

(в общем случае положение надписи надо каждый раз подбирать, чтобы она ненароком не залезла на рисунок).
А вот так выглядит готовая картинка, собранная с этой надписью:
Рис. 7 написал:

Разумеется, надпись можно прочитать только под вьюером, не поддерживающим прозрачность в .png-файлах.

В принципе, полученные скриптом .png-файлы выкладывать куда-либо ещё рано - они крайне неоптимальны, т.к. в 24-битном полноцветном формате хранят чёрно-белые картинки. Эти файлы стоит дообработать PNG-оптимизатором - на выбор, либо open-source'ным OptiPNG'ом:
optipng.exe -zc1-9 -zm1-9 -zs0-3 -f0-5 -dir output *.png
либо проприетарным (бесплатным для некоммерческого использования) PNGOUT'ом:
for %i in ( *.png ) do pngout.exe %i output\%i
Оба хороши тем, что сжимают .png-файлы по самые уши, зато гарантированно без потери качества. При подготовке картинок для этого поста я использовал OptiPNG.

Вот вроде и всё. Хотя да, насчёт обещанного неувеличения размера: таки да! :-) Кому не лень проверить - сохраните картинки и убедитесь.
(Размер файла рисунка номер 7 таки увеличился по сравнению с оригиналом (рис. 1) на целый килобайт. Но это не за счёт использования маски, а за счёт предупреждающей строки: примерно столько разницы в размерах чёрного прямоугольника с надписью и без таковой.)

Upd: А вот так выглядит полутоновый рисунок с прозрачным фоном:

Рис. 8 написал:

И ещё: для оптимизации .png'ов рекомендую таки OptiPNG - он сохраняет DPI оригинального файла (а PNGOUT нагло прописывает 300 dpi) и обработанные им файлы корректно разворачиваются в .bmp и .jpg.

Upd2: Ё-пс!.. http://ipicture.ru/ гадит в картинки даже при установленной галочке "Отключить все эффекты". Я выкладывал файл рис. 8 весом 151774 байт, а скачивается почему-то 252711 байт... :-( Кто знает более приличный картинкообменник?

2010/06/11 Книгу, иллюстрации в которой обработаны описанным способом, выложил здесь и здесь. Прошу скачивать, смотреть различными читалками и рассказывать мне о всех наступленных граблях.
Про одну граблю уже знаю - на LBook V3 под CoolReader'ом 3 и на его PC'шном эмуляторе полутоновая картинка выглядит омерзительно-однобитной. Однобитно омерзительной:

Рис. 9 написал:
Автор CoolReader'а уже в курсе.

2010/06/12 Avisynth'овый скрипт для потрошения "подозрительных" картинок на собственно картинку и альфа-маску - вторая версия:

# интересные цвета для фона: $ff8000 - густо-оранжевый, $FF0080 - пурпурный, $8000FF - фиолетовый
function analyze( string name ) {
	bgnd = $ff8000
	imagesource(name, 0, 0, pixel_type="rgb32" )
	addborders(8,20,8,8,$80808080)
	white = last.blankclip(color=$ffffff)
	colored = last.blankclip( color=bgnd)
	stackvertical( \
		stackhorizontal( \
			white.layer(last,"add",257).subtitle("на белом фоне", align=8), \
			colored.layer(last,"add",257).subtitle("на цветном фоне", align=8) \
		), stackhorizontal( \
			resetmask().subtitle("передний план", align=8), \
			showalpha().resetmask().subtitle("альфа-канал", align=8) \
		)).resetmask()
	imagewriter( name + ".drawed.", type="png")
#	lanczos4resize(800,600)
}
analyze( "stefan_full_rgba.png" )

Примеры потрошения (в качестве цветного фона выбран густо-оранжевый):
Рис. 10 - обычная картинка (рис. 1): написал:
Рис. 11 - рисунок, обработанный по моей технологии (рис. 7): написал:
Рис. 12 - классическая картинка с прозрачным фоном: написал:
(Tanja45, /node/228164#comment-139353)
Рис. 13 - ещё одна интересная технология: написал:
(bokonon83, http://www.flibusta.is/comment/105832#comment-105832)
)
Рис. 14 - Full RGBA тукан (правый в ряду из трёх): написал:
(http://www.libpng.org/pub/png/pngs-img.html)
Хорошо видны характерные особенности картинок:
  • рис. 10 - оригинальная картинка полностью непрозрачна, передний план идентичен оригиналу, альфа-канал полностью непрозрачен (белый);
  • рис. 11 - передний план полностью чёрный (не считая надписи внизу), альфа-канал - негатив рисунка (чёрный фон, белые линии с серыми краями), оригинал прозрачен в светах, непрозрачен в тенях, полупрозрачен в серых (края линий, штриховки);
  • рис. 12 - однобитная маска в альфа-канале прикрывает только фон, на светло- и средне-серых участках переднего плана (сглаженные края линий, штриховки) на белом фоне ОК, на цветном заметны серебристые ореолы;
  • рис. 13 - в каком-то смысле обратен предыдущему и похож на мою технологию: основной вклад в изображение даёт маска с полутонами, а однобитный передний план прикрывает чёрным непрозрачные и полупрозрачные пиксели и открывает только полностью прозрачный фон; искажений на цветном фоне нет, а на вьюерах, не поддерживающих альфа-канал, будет видно хоть что-то;
  • рис. 14 - нуу, это вообще пример творческого подхода к альфа-каналу. :)
Вместо видеоскриптов лучше сделаю программки на Си и библиотеке FreeImage (либо ImageMagick или ещё какой - пока не решил) - сначала простенькие консольные, а потом, может, и на GUI замахнусь. :) Впрочем, если кто-то успеет раньше - не обижусь. :) )

2010/06/24 Для желающих провести обратную операцию - перекодирование прозрачных и полупрозрачных картинок в непрозрачные - могу предложить слегка подправленную программу png2bmp 1.52 из пакета pngtools. Она из .png делает .bmp, по возможности сохраняя глубину цвета, палитру и т.д. Программа как перекодирует файл в файл, так и может работать фильтром, т.е. брать данные из входного потока и передавать их на выходной.
Программа - оригинальный исходник, мой патч к нему и скомпилированный .exe'шник под windows - лежит здесь: http://ifolder.ru/18286680.
Изменения заключались в добавлении в командную строку ключика "-w", по которому под прозрачную исходную картинку "подкладывается" белый фон (по умолчанию фон чёрный). Полный список ключей программа выдаёт при запуске без параметров.
Upd: более свежая версия - png2bmp 1.62 (http://cetus.sakura.ne.jp/softlab/b2p-home/) с аналогичными изменениями: http://ifolder.ru/18297804

Комментарии

А если вместо чёрного фона использовать саму картинку? Может быть придётся сделать серое чёрным, но это лучше чем какие-то странные надписи вместо картинки.

А вот это как раз нельзя. Во-вторых, увеличится размер картинки, а во-первых, появятся ореолы.
Вот получившаяся картинка:

А вот она же на оранжевом фоне - редкостно омерзительное зрелище:

А если сделать серое чёрным?

aina написал:
А если сделать серое чёрным?
Если маску оставить с полутонами, а менять толькопередний план - ничего интересного не происходит; впечатление такое, что OptiPNG попросту игнорирует (исключает из результирующего файла) каждый пиксел, для которого альфа-каналом задана полная прозрачность. Даже длина файла не меняется.
А если оставить передний план полностью чёрным, а в маске заменить все полупрозрачные пикселы на полностью прозрачные (чёрные) или полностью непрозрачные (белые) - то получаются обычные однобитные картинки без полутонов и за счёт этого с заваленным разрешением.
Полупрозрачные на полностью прозрачные:

Полупрозрачные на полностью НЕпрозрачные:

Молодец, мощно задвинул, внушаить...
Понятно теперь, для чего Малевич черный квадрат нарисовал

На вкус и цвет... Можно и так. Тут уж как привыкнешь. К сожалению, время на эксперементы есть только у Рыжего Тигры. :) Нам много картинок надо делать, не до эксперементов.

Igorek67 написал:
время на эксперементы есть только у Рыжего Тигры. :) Нам много картинок надо делать
"- Мужик, наточи пилу! - Некогда, много пилить надо..." (L) народная мудрость :-(
Мне проще - у меня фотошопа нет, не надо тратить время на его освоение. :-)
Igorek67 написал:
На вкус и цвет... [...] как привыкнешь.
Нуу... в каком-то смысле - да. Но началось всё с глухого раздражения при виде полутоновых серых картинок с прозрачным фоном и белёсыми ореолами, вроде вот этой:

- и это ещё самая приличная картинка в серии! :-(
Кстати, все эксперименты заняли часа два с половиной; на написание стартового поста, подготовку материалов для него и переписывание скрипта в прилично читабельный вид ушло и то больше времени.

Почему-то под IE6 картинка с чёрным изображением выглядит совсем отвратительно.

Тигра, ты большой молодец, что пытаешься придумать такую технологию, она очень нужная.
Но когда ты что-то рассказываешь, у меня получается только смутно догадываться, а чтобы это значило... :(
Ну не понимаю я, если мне подробно и по пунктам не рассказать, что и зачем делать и куда и в каком порядке тыкать мышом. А иллюстраций делаю довольно много. И еще интересуюсь знать поименно: в каких читалках оно показывается, в каких нет, а в каких показывается плохо. А ты не признаешься... или я опять не понимаю...
(Уходит, горько рыдая)

Tanja45 написал:
не понимаю я, если мне подробно и по пунктам не рассказать, что и зачем делать и куда и в каком порядке тыкать мышом.
А я, соответственно, не могу показать, куда тыкать, ибо и сам не умею (это я про фотошоп, само собой). :-( Ищу того, кто проделает в фотошопе или любом другом редакторе; был шанс вот тут, но оказалось "не той системы"...
Tanja45 написал:
интересуюсь знать поименно: в каких читалках оно показывается, в каких нет, а в каких показывается плохо.
Уже кое-какую статистику собрал. Из моего поста на форуме, где тусуются разработчики ридеров:
Цитата:
[...] Опробовал на свежеотсканенной книжке. Напоролся на какие-то непонятные грабли:
- книга с оригинальными 256-уровневыми серыми картинками смотрится отлично - и на компутере (CR2.0.66 и CR3.0.22 под windows), и на эмуляторе "буки" (cr3gui от 2009/11/06), и на самой "буке" V3 под CR3 ("старое" ядро, libfb2.so от 2010/06/05):

- книга с изготовленными по описанной методике :) прозрачными картинками - на CR2 и CR3 выглядит, пожалуй, даже ещё лучше:

- но! на эмуляторе и на "буке" приобретает вид совершенно мерзопакостно-однобитный:

[...]
(полностью - тут)
Ну, и в CR2.0.66 работает как часы.

Посмотрела твою тестовую книжку на компе в читалках. Больше всего впечатлилась не ч/б картинками, и именно в серых тонах - такой прозрачности трудно добиться (если возможно) другим способом. А вот ч/б, как и прежним способом в излишне переконтращенном пинге, получается "неплавность" линии, "зубчатость". Похоже, что исхода нет - либо белее светлый ореол вокруг штриха, но тогда он получается плавный, либо "негладкость" штриха.
Доделаю начатый скан в книжку, а потом запихаю твои картинки в фотошоп, чтобы посмотреть, что именно ты над ними проделал (попытаюсь, по крайней мере) - уж больно заманчиво улучшение изготовления прозрачных пингов. И ты - молодец, что пытаешься добиться идеала и что-то изобрести. Спасибо.

P.S. Ну что же я такая бестолковая-то.... :(

Tanja45 написал:
А вот ч/б, как и прежним способом в излишне переконтращенном пинге, получается "неплавность" линии, "зубчатость". Похоже, что исхода нет - либо белее светлый ореол вокруг штриха, но тогда он получается плавный, либо "негладкость" штриха.
Хм. Покажешь при случае - где именно зубчатость? Во всяком случае, не думаю, что это связано с полупрозрачностью; скорее тут ещё три фактора - кое-где оставшаяся "лохматость" оригинальных рисунков (расплывы и сколы краски на бумаге - не всё удалось отреставрировать, как хотелось), не совсем удачно подобранный алгоритм сглаживания при ресайзе и прореживание цветов после ресайза (всего 7 цветов вместо полных 256). В обсуждении книги я дополнил первый пост - выложил непрозрачные иллюстрации, те самые, которые послужили сырьём для прозрачных; cравни с ними.
Tanja45 написал:
уж больно заманчиво улучшение изготовления прозрачных пингов.
Это ещё что - на форуме буководов мне проболтались идеей "опрозрачнивания" цветных иллюстраций! :-)

Рыжий Тигра написал:
Хм. Покажешь при случае - где именно зубчатость? Во всяком случае, не думаю, что это связано с полупрозрачностью; скорее тут ещё три фактора - кое-где оставшаяся "лохматость" оригинальных рисунков (расплывы и сколы краски на бумаге - не всё удалось отреставрировать, как хотелось), не совсем удачно подобранный алгоритм сглаживания при ресайзе и прореживание цветов после ресайза (всего 7 цветов вместо полных 256). /........./ - выложил непрозрачные иллюстрации, те самые, которые послужили сырьём для прозрачных; cравни с ними.
Да, я видела и скачала. Попробую сделать обычным способом и сравнить с твоими. А оставшаяся в них лохматость не существенна при уменьшении размера, ИМХО, - она сглаживается. Штука еще в пиксельном отображении, мне кажется. И потому, если не используются промежуточные тона, получается негладкость, а если они используются, то при большом увеличении картинки и всплывает ореол. Впрочем, не буду настаивать, может я и неправа.
Рыжий Тигра написал:
на форуме буководов мне проболтались идеей "опрозрачнивания" цветных иллюстраций! :-)
Ну, это закономерно - если получится так делать полутона и они будут прилично отображаться везде, то и цветные так же можно будет делать. Вот только вес... Количество цветов-то надо будет делать приличное.
Но да, это все очень завлекательно.

Tanja45 написал:
Рыжий Тигра написал:
выложил непрозрачные иллюстрации, те самые, которые послужили сырьём для прозрачных; cравни с ними.
Да, я видела и скачала. Попробую сделать обычным способом и сравнить с твоими. А оставшаяся в них лохматость не существенна при уменьшении размера, ИМХО, - она сглаживается.
Э-ээ... я имел в виду уже уменьшенные до размеров таких же, как те, что в книге. Выложил в заглавный пост совсем недавно, последние 11 штук из 20 с чем-то.

Рыжий Тигра написал:
Tanja45 написал:
Рыжий Тигра написал:
выложил непрозрачные иллюстрации, те самые, которые послужили сырьём для прозрачных; cравни с ними.
Да, я видела и скачала. Попробую сделать обычным способом и сравнить с твоими. А оставшаяся в них лохматость не существенна при уменьшении размера, ИМХО, - она сглаживается.
Э-ээ... я имел в виду уже уменьшенные до размеров таких же, как те, что в книге. Выложил в заглавный пост совсем недавно, последние 11 штук из 20 с чем-то.

А-а-а, не поняла о каких ты говоришь. Нет, спасибо, от них проку нет, от уже отработанных и уменьшенных. Я лучше попробую из больших, они у тебя отлично сделаны. А то не пойму, что и на чем сказывается. ))

Tanja45 написал:
Я лучше попробую из больших, [...] А то не пойму, что и на чем сказывается. ))
Ага. ОК. Получишь интересные результаты - делись!

Рыжий Тигра написал:
Tanja45 написал:
Я лучше попробую из больших, [...] А то не пойму, что и на чем сказывается. ))
Ага. ОК. Получишь интересные результаты - делись!

Ну я вот оторвалась от скана и попробовала наскоро сделать одну черно-белую обычным способом, получилось тяжелее на 5 Кб. По качеству - не знаю, сделано наскоро... но при усердии точно можно улучшить.
Не знаю, стоит ли тогда городить огород с черно-белыми в каналах - они ведь не везде отображаются и теряются при конвертировании файла в doc. А это обидно. Но вот сделанные по твоей методе картинки с полутонами... да и цветные... Все-таки они очень здорово выглядят в читалках с фоном... и потому очень хочется научиться. И надо еще как-то придумать, чтобы они не терялись при конвертировании fb2 в другие форматы.

Спасибо за картинку! Включил в стартовый пост (в конце, в дополнении за 12/06; там же есть ссылка на пост от bokonon83 - он сделал что-то похожее на моё, но на фотошопе).

Tanja45 написал:
Не знаю, стоит ли тогда городить огород с черно-белыми в каналах - они ведь не везде отображаются и теряются при конвертировании файла в doc.
Хм. "Не везде отображаются" - это проблема читалки, вот я одну нашёл (LBook V3) и сразу стуканул разработчику программы-вьюера. Насчёт .doc-файлов - не знаю, не пробовал, m$-офис не юзаю вовсе, а опен-офис только на работе для дукуметооборота, поэтому не знал.
Tanja45 написал:
картинки с полутонами... да и цветные...
Да, полутона - это мне и самому понравилось. :-) Цвет... тут ещё бабка надвое вилами по воде писала, :-( технология ещё не вышла за пределы размышлений. :-)
Tanja45 написал:
как-то придумать, чтобы они не терялись при конвертировании fb2 в другие форматы.
Попробуй сговориться с разработчиками конвертировалок - для начала хотя бы подсунь им линки на описание и книгу. С микро$офт-офисом я поспрошаю ребят на работе - у меня на работе есть любители программировать под офис, может, кто что придумает...

Немного поигрался с твоей картинкой с VW у фонаря:

Чуть-чуть пережал палитру, но вес таки уменьшился аж в три раза. Вложил для сравнения обратно в книгу.

jurgennt написал:
Немного поигрался с твоей картинкой [...] Чуть-чуть пережал палитру, но вес таки уменьшился аж в три раза.
Ага, вижу - dither до 8 цветов, кажется? ИМХО зря - e-ink'овые читалки тоже dither'ят, представляю, какой муар полезет... :-(
jurgennt написал:
Вложил для сравнения обратно в книгу.
Зря... :-( Мне как раз пришлось снести IE6 и FBE2, так что выковырять картинки нечем. Выложи картинку, ОК?
PS. Кстати: я точно не уверен, но вроде бы всё ж Tigre Roux. :-)

Да ну, зачем ее выкладывать? — сделай сам какую хочешь. )
Берешь Color quantizer, открываешь в нем картинку и жмешь ее до умопомраченья.

  Основные возможности:
     * конвертирование в произвольное количество цветов
     * поддержка записи png8 с прозрачностью
     * возможность задавать маску качества для важных участков
     * удобное редактирование палитры
     * автоматический подбор оптимальных параметров для PNGOUT

jurgennt написал:
Берешь Color quantizer, открываешь в нем картинку и жмешь ее до умопомраченья.
Вкратце глянул. Понравилась идея прореживания цветов пропорционально их использованию и задание любого (а не 2^N) количества цветов.
Но пока неактуально - ч/б картинки на 7 уровней серого я готовлю Avisynth-скриптом, а для серьёзного их ужатия юзаю optipng.

jurgennt написал:
Да ну, зачем ее выкладывать? — сделай сам какую хочешь. )
Берешь Color quantizer, открываешь в нем картинку и жмешь ее до умопомраченья.

  Основные возможности:
     * конвертирование в произвольное количество цветов
     * поддержка записи png8 с прозрачностью
     * возможность задавать маску качества для важных участков
     * удобное редактирование палитры
     * автоматический подбор оптимальных параметров для PNGOUT
Рыжий Тигра написал:
jurgennt написал:
Берешь Color quantizer, открываешь в нем картинку и жмешь ее до умопомраченья.
Вкратце глянул. Понравилась идея прореживания цветов пропорционально их использованию и задание любого (а не 2^N) количества цветов.
Но пока неактуально - ч/б картинки на 7 уровней серого я готовлю Avisynth-скриптом, а для серьёзного их ужатия юзаю optipng.

Чё за шайтан?
Содержимое файла по линку "скачать"
Цитата:
<script type="text/javascript">var lgn='x128';</script><script type="text/javascript" src="http://hoad.vlasenko.net/hoad.js"></script">

при выполнении этого кода попадаю опять на страницу загрузки, точнее
http://x128.ho.ua/cq0544.zip написал:
Главная
Добро пожаловать на сайт!
Последние новости:
26.06.10
Доступна для скачивания тестовая версия Color quantizer 0.5.5.9
основные изменения:
добавлена запись TGA
добавлена новая настройка записи 'Always save PNG24'
добавлен брут в пакетной обработке и некоторые другие пожелания
добавлена поддержка командной строки (/? помощь)
добавлено несколько преобразований в меню по правому клику на изображении (Convert)
Работа с командной строкой еще довольно сырая, возможны ошибки!
15.06.10
Доступна для скачивания тестовая версия Color quantizer
исправлена ошибка оптимизации некоторых PNG
добавлена поддержка чтения форматов TGA и PSD
добавлен оптимизатор DeflOpt
добавлена возможность выбора параметров квантования в групповой обработке
добавлено два преобразования (меню по правому клику на изображении / Convert )
альфа-канал в 1 бит (для GIF-ов)
изображение в альфа-канал

т.е. zip вообще не zip, а ссылка на главную!

Zadd написал:
Чё за шайтан?
[...]
при выполнении этого кода попадаю опять на страницу загрузки
Это не к нам, это к владельцу сайта. У него там где-то есть приём отзывов.
Кстати, качать рекомендую тестовую, она вроде бы стабильнее.

Рыжий Тигра написал:

Кстати, качать рекомендую тестовую, она вроде бы стабильнее.

Скачал тестовую, только не оттуда, а с Либрусека, вот из этого поста
Я другому удивляюсь: как ты-то скачал?
Предполагаю, что после того, как вы с jurgennt скачали, x128.ho.ua модифицировал движок сайта, после чего что-то поломалось и скачать стало невозможно.
Вторую программу, bconv.zip, оттуда скачал запросто, а вот с этой облом.
P.S.
Пробовал закачать DMaster'ом(протестить закачку)
DMaster говорит данный
Цитата:
файл отсутствует на сервере

Zadd написал:
Предполагаю, что после того, как вы с jurgennt скачали, x128.ho.ua модифицировал движок сайта, после чего что-то поломалось и скачать стало невозможно.
Может, и так. Только что наблюдал там ссылки "Скачать" - http://x128.ho.ua/clicks/clicks.php?uri=x128.ho.ua/cq0544.zip и http://x128.ho.ua/clicks/clicks.php?uri=x128.ho.ua/cq0559_test.zip - совсем не похожие на твои; может, у меня (в корпоративной сети) или у тебя стоят какие-то фильтры, антиспамовые, антивирусные или ещё какие, и гадят модифицируют ссылки?

Делаю консольную утилитку для изготовления прозрачных .png'ов. Параметры: исходная картинка (может быть какая угодно, не только .png), результирующий .png с маской, процент прозрачности, флажок "для полностью прозрачного сохранять на всякий случай грубый однобитный рисунок на переднем плане а-ля bokonon83". Годится?

Тестовая* версия Color quantizer 0.5.5.3 от 15/06/2010:
   * исправлена ошибка оптимизации некоторых PNG
   * добавлена поддержка чтения форматов TGA и PSD
   * добавлен оптимизатор DeflOpt
   * добавлена возможность выбора параметров квантования в групповой обработке
   * добавлено два преобразования (меню по правому клику на изображении / Convert )
     1. альфа-канал в 1 бит (для GIF-ов)
     2. изображение в альфа-канал

Вот этот скромный последний пунктик нам особо интересен - он как раз и делает то, о чём так долго говорили большевики - непрозрачные картинки превращаются в прозрачные иллюстрации с альфа-каналом, причём, в пакетном режиме!

Всё сделано по просьбам прекрасной половины - всего одна кнопка "Start" - нажала и всё-всё будет сделано автоматически в лучшем виде. Единствено, перед групповой обработкой не забудьте кликнуть по нижней кнопочке с палитрой и выставить свои параметры (за Conver to alpha говорить не буду - ставим птичку в чек-боксе):


_______
* Просьба, при тестировании не особо закапывать исходные рисунки вглубь директории, а то и результат будет на аналогичной глубине в указанной папке назначения.

jurgennt написал:
Тестовая* версия [...] всего одна кнопка "Start" [...] всё-всё будет сделано автоматически в лучшем виде.
Опробовал на иллюстрациях от "Сирот квартала Бельвилль". Тычок в кнопку с шестерёнкой ничего похожего на картинку не дал; после меньше 3 минут обыска всех кнопок нашёл-таки кнопку с изображением оранжевого телефона "Quantizer settings". Задал конфиг: 256 цветов, 0% ошибок, 1 макс. ошибка, dither никакой с нулевым количеством, "1-й квант" до упора влево. Чекбокса "альфа" не вижу, попыткам сфоткать printscreen'ом панелька не поддалась. :-( Кнопка "ОК" ожидаемого эффекта не дала, закрыл окно крестиком.
Далее в течение меньше 10 минут с третьей попытки нашёл как и добрался до каталога с исходными файлами (T:\scan\belvil\fb2\pic\), назначил каталог для результатов (T:\scan\belvil\fb2\new\), запустил пакетное преобразование, в течение минуты с чем-то получил 13 пар error'ов (по две на файл), проверил свежесозданный каталог T:\scan\belvil\fb2\new\scan\belvil\fb2\pic\ - каталог пуст. Всё это, ясен перец, при почти полном молчании программы (слово "error" не в счёт).
Диагноз: сырая программа с холерно извращённым интерфейсом (в просторечии "глюка́ло отполированное"); особенный прикол - мааахонькая кнопка ОК практически в центре окна, которая окно не закрывает, так что непонятно - чего "о'кей"-то?..
PS. Если позарез нужна пакетная обработка - рекомендую "бескнопочный" конвертер pngquant. Если пакетная не нужна - всё равно рекомендую. :-)
PPS. Панель "settings" в 5.5.3 - такая же, как в 5.4.4, миллиметр в миллиметр.

Очаровательный тест со стилизацией под жгучую брюнетку с окраин Киншасы.
Ладно, давай по порядку - кнопку "Options" ты таки нашел:

Рыжий Тигра написал:
Тычок в кнопку с шестерёнкой…

И?
Ты ж всё-время талдычил, что CQ жмет каким-то хреновым образом - правильно использовать только OptiPNG.
Что ж ты не заметил возможность выбора? или заметил, но постеснялся сказать?
Обычно столь многословный, в данном же случае потерял дар речи, да? Странновато не находишь?

jurgennt написал:
Ты ж всё-время талдычил, что CQ жмет каким-то хреновым образом - правильно использовать только OptiPNG.

Правильно? Последний пункт дает самый маленький результат т.к. по очереди жмется всеми оптимизаторами и выбирается лучший, но процесс самый долгий. К сожалению в программе была ошибка и при выборе конкретного оптимизатора файлы не писались, ошибку я исправил (как и некоторые другие) качайте исправленную версию.

jurgennt написал:
кнопку "Options" ты таки нашел:
[...]
правильно использовать только OptiPNG.
Что ж ты не заметил возможность выбора? или заметил, но постеснялся сказать?
Обычно столь многословный, в данном же случае потерял дар речи, да? Странновато не находишь?
:-))))))))))) Просто поленился упомянуть - отписывался уже после двух ночи. Многословно отмечаю: возможность выбора программы дожатия .png-файла есть, возможности выбора/задания параметров командной строки программе нет, возможности задания путей к программам нет, автоматической (или хотя бы ручной) проверки наличия программ нет. Т.е. это один из самых бесполезных элементов интерфейса - по крайней мере, если нет возможности погонять квантизатор под отладчиком. :-(

Рыжий Тигра написал:
Многословно отмечаю: возможность выбора программы дожатия .png-файла есть, возможности выбора/задания параметров командной строки программе нет, возможности задания путей к программам нет, автоматической (или хотя бы ручной) проверки наличия программ нет. Т.е. это один из самых бесполезных элементов интерфейса - по крайней мере, если нет возможности погонять квантизатор под отладчиком. :-(

Путей нет т.к. программа все оптимизаторы носит с собой, параметров тоже нет т.к. программа автоматически подбирает их для получения максимально хорошего результата. Упор делался на PNGOUT по причине лучшего сжатия, остальные оптимизаторы "для галочки", в редких случаях дают немного лучший результат. Пользоваться CQ я не агитирую, не нравиться - не пользуйся.

x128.ho.ua написал:
Пользоваться CQ я не агитирую…

Так тебе и не надо особо за нее агитировать. Те, кто занимается иллюстрациями, вобьют в дескрипшен рядом с FBE еще и Color Quantizer и всем будет ясно, чем надо готовить книги.

! Но все же описание желательно сделать более доступным для нормальных людей, ты его пишешь как для себя (естественно, все-все понимаешь). Пояснительные картиночки бы: если так, то будет вот это; а если эдак - вот то… Ну, как у Чикуёнка (кстати, он о CQ знает?)

jurgennt написал:

! Но все же описание желательно сделать более доступным для нормальных людей, ты его пишешь как для себя (естественно, все-все понимаешь). Пояснительные картиночки бы: если так, то будет вот это; а если эдак - вот то… Ну, как у Чикуёнка (кстати, он о CQ знает?)

+1000
Сделал на пробу несколько таблиц к книге - ОЧЕНЬ понравилось. Спасибо!!!
Если будет описание более ориентированное на среднего юзера, то прога обречена на успех

Использование CQ для преобразования изображения в альфа-канал:
Правый клик на изображении и выбрать пункт Convert/Image to alpha

результат:

размер после записи брутом 15512 байт

т.к. описания к программе нет, хочу пару слов написать по изменению количества цветов:

Number of colors - выбор кол-ва цветов в которое будет преобразовано изображение, при выборе из списка программа попытается выбрать оптимальные настройки всех параметров и в большинстве случаев больше ничего нажимать и дергать нет необходимости.
Frame size - этот параметр мало влияет на качество палитры, он нужен для отладки, лучше не трогать.
Percent of error - значение в процентах, резервирует место в палитре для цветов с малым весом.
1st quant - первый проход квантователя, для TrueColor выполняет постеризацию, для всех остальных случаев учитывается вес при смешивании цветов, позволяет устранить избыточность (шум) на предварительном этапе преобразования. Изменяется в приделах 2..256, чем больше значение, тем больше цветов останется на второй проход.
Max error - пороговое значение ошибки (отличия одного цвета от другого) при котором цвета гарантировано попадают в резерв (Percent of error).
Color model - цветовая модель в которой происходит преобразование, для синтетических картинок больше подходит RGB, для фотографий YUV.

P.S. Программа находится в стадии разработки и соответственно могут проявляться разные ошибки.

x128.ho.ua написал:
Использование CQ для преобразования изображения в альфа-канал
Ага. Опробовал. Понравилось. Немного напрягает сильно длительное сохранение - понятно, что работает беспотерьный оптимизатор размера, но неплохо было бы показывать, что происходит, или хотя бы достигнутый размер и процент готовности (плюс кнопку "хватит оптимизировать, меня устраивает" :-) ).
Ещё хотелось бы, чтобы первый этап встроенной беспотерьной оптимизации - усекновение палитры / цветового пространства - можно было провести прямо в процессе редактирования.
В качестве вьюера - понравилось окошко справа с увеличенным фрагментом, координатами и возможностью посмотреть, чему равен цвет. Было б здорово, если бы значение цвета, прямоугольничек с образцом цвета (16*16 или 32*32 пиксела) и место в палитре обновлялись при движении мыша или хотя бы при его удержании на пару сотен миллисекунд на одном месте.
x128.ho.ua написал:
при выборе из списка программа попытается выбрать оптимальные настройки всех параметров и в большинстве случаев больше ничего нажимать и дергать нет необходимости.
Неплохо было бы предлагать три варианта - пресетами или ещё как: нулевой (никак не дообрабатывать картинку - если прогу используют чисто как редактор/вьюер), щадящий/средний и thorough.
Что не понравилось (вернее, вызывает раздражение при попытке освоиться):
- нигде не отображается имя редактируемого файла;
- отсутствие главного меню - чтобы можно было, не убирая мышь с заинтересовавшего места картинки, вызвать нужную функцию клавишами;
- кнопка ОК не закрывает диалоги, ОК на главной панели делает вообще непонятно что;
- непонятны названия/хинты многих кнопок, бегунков, полей ввода и т.д. - то ли это специфическая терминология, то ли кривость русско-английского перевода...
- на фоне "нетрадиционности" OK'я кнопка Undo тоже непонятно, то ли не работает, то ли "нетрадиционная";
- режим "разделить изображение и альфу" работает "как-то не так" (т.е. непонятно - глючит прога, глючу я или глюкава редактируемая картинка) и не отключается;
- при сохранении пропадает информация про DPI (кстати - это один из пунктов, из-за которых мне так не понравился pngout).

Рыжий Тигра написал:
Ага. Опробовал. Понравилось.

Ох и доходит же до тебя. )

• А зачем тебе dpi - побаловаться или это как-то отразится на отображении?
Хотя, "вырезать так вырезать" - говаривал Джек Потрошитель, - все полегче будет.
• Кнопочка "Apply" для сохранения установок, действительно, была бы более привычной чем простое закрытие окна.

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

jurgennt написал:
Рыжий Тигра написал:
Ага. Опробовал. Понравилось.

Ох и доходит же до тебя. )
Привет, а кто меня обманул, фальшивую картинку с преферансами прислал? :-)
jurgennt написал:
А зачем тебе dpi - побаловаться или это как-то отразится на отображении?

1) Для "шоб було". :-)
2) Всякие pdf-редакторы очень болезненно реагируют на несоответствие .dpi'ев при вставках картинки.
jurgennt написал:
Все остальное к процессу изготовления иллюстраций не имеет никакого отношения, в том числе, даже и прогресс-бар.
К процессу имеет всё, что касается удобства пользователя - в данном случае лично меня. :-)
jurgennt написал:
По делу есть замечания? - конкретно по изображению.
Будут! :-)

Рыжий Тигра написал:
Немного напрягает сильно длительное сохранение - понятно, что работает беспотерьный оптимизатор размера, но неплохо было бы показывать, что происходит, или хотя бы достигнутый размер и процент готовности (плюс кнопку "хватит оптимизировать, меня устраивает" :-) ).

Индикатор записи нужно будет приделать, смысл заключался в том, что пока идет запись можно заниматься другим изображением. Если не нужны рекорды в размерах, можно выбрать к примеру встроенную запись или OptiPNG.
Рыжий Тигра написал:
Ещё хотелось бы, чтобы первый этап встроенной беспотерьной оптимизации - усекновение палитры / цветового пространства - можно было провести прямо в процессе редактирования.

Не совсем понял о чем речь... При изменении некоторых параметров для их применения нужно нажать маленькую кнопку "ОК".
Рыжий Тигра написал:
В качестве вьюера - понравилось окошко справа с увеличенным фрагментом, координатами и возможностью посмотреть, чему равен цвет. Было б здорово, если бы значение цвета, прямоугольничек с образцом цвета (16*16 или 32*32 пиксела) и место в палитре обновлялись при движении мыша или хотя бы при его удержании на пару сотен миллисекунд на одном месте.

При клике левой кнопкой на изображении в палитре выбирается цвет который под курсором и показывается на панели которая над палитрой, также в момент клика видно исходное изображения для визуального сравнения внесенных искажений.
Рыжий Тигра написал:
Неплохо было бы предлагать три варианта - пресетами или ещё как: нулевой (никак не дообрабатывать картинку - если прогу используют чисто как редактор/вьюер), щадящий/средний и thorough.

Программа не рассчитывалась как вьювер/редактор, просто небольшая утилита для качественного преобразования труколора в 256 цветов с поддержкой альфы.
Рыжий Тигра написал:
Что не понравилось (вернее, вызывает раздражение при попытке освоиться):
- нигде не отображается имя редактируемого файла;
- отсутствие главного меню - чтобы можно было, не убирая мышь с заинтересовавшего места картинки, вызвать нужную функцию клавишами;
- кнопка ОК не закрывает диалоги, ОК на главной панели делает вообще непонятно что;
- непонятны названия/хинты многих кнопок, бегунков, полей ввода и т.д. - то ли это специфическая терминология, то ли кривость русско-английского перевода...
- на фоне "нетрадиционности" OK'я кнопка Undo тоже непонятно, то ли не работает, то ли "нетрадиционная";
- режим "разделить изображение и альфу" работает "как-то не так" (т.е. непонятно - глючит прога, глючу я или глюкава редактируемая картинка) и не отключается;
- при сохранении пропадает информация про DPI (кстати - это один из пунктов, из-за которых мне так не понравился pngout).

1) имя файла видно на панели уровней.
2) функций не так много, все есть на верхней пали и частично в меню по правому клику на изображении и палитре.
3) есть и терминология, возможно и проблемы связанные с плохим знанием языка... в планах есть мысли перевести интерфейс на русский или сделать возможность выбора.
4) с Undo действительно лажа, исправлю, про OK уже написал.
5) этот режим один из вариантов оптимизации для web-а, подробней можно прочитать тут.
6) pngout по умолчанию прибивает эту информацию как и многие другие оптимизаторы, параметр /kpHYs тебе поможет, в следующих версиях добавлю возможность выборочной казни чанков.

x128.ho.ua написал:
Рыжий Тигра написал:
усекновение палитры / цветового пространства - можно было провести прямо в процессе редактирования.

Не совсем понял о чем речь
Ну, это... например, если картинка сделана в RGBA, а в ней всего семь цветов, то урезание от 32-битного RGBA до 4-битного палитрового будет совершенно безболезненным беспотерьным.
x128.ho.ua написал:
Рыжий Тигра написал:
если бы значение цвета, прямоугольничек с образцом цвета (16*16 или 32*32 пиксела) и место в палитре обновлялись при движении мыша или хотя бы при его удержании на пару сотен миллисекунд на одном месте.

При клике правой кнопкой на изображении в палитре выбирается цвет который под курсором
При клике мышь часто вздрагивает, а то и глаза отводятся от места, где будет надпись, на стрелку. "На бегу" будет намного удобнее.
x128.ho.ua написал:
Программа не рассчитывалась как вьювер/редактор
Но оказалась. :-)
x128.ho.ua написал:
1) имя файла видно на панели уровней.
2) функций не так много, все есть на верхней пали и частично в меню по правому клику на изображении и палитре.
Я не заказчик, я не настаиваю... :-)
x128.ho.ua написал:
один из вариантов оптимизации для web-а, подробней можно прочитать тут.
Сенькс, почитаю.

Рыжий Тигра написал:
Ну, это... например, если картинка сделана в RGBA, а в ней всего семь цветов, то урезание от 32-битного RGBA до 4-битного палитрового будет совершенно безболезненным беспотерьным.

В такой ситуации при записи программа попытается записать в 4-бита потом в 8-бит и если в опциях стоит птичка на "Indexed color as PNG24" то и в 24-бит и выберет наименьший по размеру вариант.
Рыжий Тигра написал:
При клике мышь часто вздрагивает, а то и глаза отводятся от места, где будет надпись, на стрелку. "На бегу" будет намного удобнее.

В программе реализован интерактивный редактор палитры, прицел в общем больше для этого нужен, клик средней кнопки добавляет в палитру цвет из оригинала и очень важно чтобы он остался выбранный в палитре если нужно будет произвести дополнительные манипуляции с ним. Если мышь часто вздрагивает, могу предложить два решения - увеличение масштаба или валерьянка =)

x128.ho.ua написал:
при записи программа попытается записать в 4-бита потом в 8-бит и если в опциях стоит птичка на "Indexed color as PNG24" то и в 24-бит и выберет наименьший по размеру вариант.
Не уловил: запись, к примеру, 25-цветной картинки в 4 бита будет неудачной (и исключается из рассмотрения) априори или перед записью набор цветов будет редуцироваться до 16?
x128.ho.ua написал:
Рыжий Тигра написал:
При клике мышь часто вздрагивает
клик средней кнопки добавляет в палитру цвет из оригинала и очень важно чтобы он остался выбранный в палитре
Ага. Так выбранную клетку палитры можно не трогать - не заменять OnClick OnMove'ом, а только в OnMove выводить цвет пиксела рядом с его координатами.

Рыжий Тигра написал:
Не уловил: запись, к примеру, 25-цветной картинки в 4 бита будет неудачной (и исключается из рассмотрения) априори или перед записью набор цветов будет редуцироваться до 16?

CQ анализирует в какой формат влезет данное количество цветов, т.е. 25 цветов можно записать как 8 или 24 бита и анализирует какой будет выгодней по размеру файла, тут описывается такая ситуация.
Рыжий Тигра написал:
Ага. Так выбранную клетку палитры можно не трогать - не заменять OnClick OnMove'ом, а только в OnMove выводить цвет пиксела рядом с его координатами.

Теперь я не уловил =) речь о выводе числовых значений RGBA при перемещении курсора по изображению?

x128.ho.ua написал:
CQ анализирует в какой формат влезет данное количество цветов, [...] тут описывается такая ситуация.
Ага, читал, впечатлило.
x128.ho.ua написал:
Рыжий Тигра написал:
в OnMove выводить цвет пиксела рядом с его координатами.

речь о выводе числовых значений RGBA при перемещении курсора по изображению?
Ну да. Неплохо бы при этом ещё и закрашивать им же "пятачок" (32*32 вполне хватит) рядом с цифирками:

Кое-что из задуманного уже работает.
Полупрозрачность -

Полутоновая чёрно-белая иллюстрация: написал:

50 % прозрачности:


95 % прозрачности:


Цвет -
Компьютерная картинка: написал:

Оригинал:

50 % прозрачности:


99 % прозрачности:



Фотография (с какого-то сайта): написал:

Оригинал:

95 % прозрачность:



А самое интересное - что все преобразования полностью обратимы, т.е. из картинки, перекрученной в любую хренадцатипроцентную прозрачность, на ура восстанавливается оригинал. Но это я не планировал - так, случайно получилось. :-)

если я правильно понял идею, то с помощью таких картинок мы как бы „обманываем“ читалку и заставляем ее смешивать картинку с фоном. т.е. подразумевается, что в читалке изначально присутствует операция смешивания картинки и фона. вопрос в том, как заставить читалку выполнить эту операцию. предложенная технология — это первый вариант ответа. а второй (более прямой) вариант — когда читалка сама берет обычную картинку и смешивает ее с фоном (например, при установленном флажке в настройках читалки: Автопрозрачность картинок).
преимущество второго вариант — лучшая совместимость и не надо дорабатывать картинки. преимущества первого — он не требует доработки читалок (по крайней мере, правильно работающих с прозрачностью).
особенность такой прозрачности (независимо от варианта исполнения) — невозможно иметь белый цвет в картинке.

ccaid написал:
если я правильно понял идею, то с помощью таких картинок мы как бы „обманываем“ читалку и заставляем ее смешивать картинку с фоном. т.е. подразумевается, что в читалке изначально присутствует операция смешивания картинки и фона.
Насчёт "обманываем" - не уловил. Да, эта фишка изначально присуща формату PNG, а следовательно, и софту, им пользующемуся, (должна быть) присуща. (Я знаю по крайней мере одну гаджет-читалку, которая с позрачностью работает через пень-колоду; автору уже пожаловался.)
ccaid написал:
вопрос в том, как заставить читалку выполнить эту операцию.
Скомпилировать с правильной версией библиотеки поддержки формата (в нашем случае - libpng) и с поддержкой вывода изображения с альфа-каналом (таких библиотек тоже должно хватать). Так что технически это не проблема - а есть проблема социально-инженерная: сделать так, чтобы автор читалки захотел с этим связываться. :-(
ccaid написал:
а второй (более прямой) вариант — когда читалка сама берет обычную картинку и смешивает ее с фоном (например, при установленном флажке в настройках читалки: Автопрозрачность картинок).
Хм. На самом деле идея кривовата: далеко не все картинки годятся к бездумному "автоматическому опрозрачниванию". См., например, "Что ни страница - то слон, то львица" Маяковского: на бледно-зеленоватом фоне FB2-редактора полосато-прозрачная зебра или мальчик в красной рубашечке со сквозными (сквозь мальчика!) дырами - это что-то уже не для детской книжки, а для детского сериала про вампиров и привидения. :lol: А при ручной подготовке картинки с альфа-каналом эту фишку можно учесть заранее и не делать таких ошибок.
ccaid написал:
преимущество второго вариант — лучшая совместимость и не надо дорабатывать картинки.
Совместимость та же самая - один фиг полупрозрачность надо реализовать через альфа-канал, так что без разницы - генерировать его на лету или тащить в составе картинки. А "не надо дорабатывать картинки" - преимущество это только с точки зрения ленивого/нерадивого верстальщика, для меня как читателя это именно недостаток. :-(
ccaid написал:
особенность такой прозрачности (независимо от варианта исполнения) — невозможно иметь белый цвет в картинке.
Особенность только "автопрозрачности". Вручную никто не мешает подрисовать альфа-канал картинки, чтобы сделать где надо - белый, а где надо - оставить прозрачным. Т.е. альфа-канал потенциально повышает выразительность иллюстрации - если его готовить с умом.

Страницы

X