Модераторы: Snowy, Alexeis, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PNG Dirty Transparency 
V
    Опции темы
lorents
Дата 16.7.2010, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



x128, при первично просмотре, вроде все как надо, сейчас начну глобальное тестирование

Я и не знал что Вы автор Color Quantizer
Программа нужная


--------------------
PM MAIL   Вверх
lorents
Дата 16.7.2010, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



x128 мне надо с Вами кое о чем переговорить:
1. я протестировал Ваш код, он работает (значение порога = 1), но картинка Comic Book Guy.png была обработана слегка лучше, чем PunyPng, а вторая картинка ff-logo-big.png чуть хуже. Можно сказать что код рабочий, а главное не громоздкий.

Я как и Вы занимаюсь оптимизацией PNG, и хотел спросить могли бы Вы модернизировать, если это возможно, и сделать так, чтобы работал через командную строку?

2. На данный момент я использую следующий код оптимизации PNG Noninterlaced

Код

for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    "%~dp0Docs\prepng.exe" "%%~fi"
    call :pngopt "%%~fi"
    "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
    "%~dp0Docs\deflopt.exe" "%%~fi"
)

:pngopt
1>%temp%\png.log 2>&1 "%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1
type %temp%\png.log
for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
    set f=%%i
)
set f=%f:~1,1%
del %temp%\png.log
"%~dp0Docs\pngout.exe" /k0 /f%f% %1


Т.е. картинка проходит через следующие стадии
1. prepng.exe разжимает картинку, т.е. делает сжатие 0
2. optipng.exe -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 - выбирается наилучший фильтр, это не всегда точно, но лучше чем перебирать фильтры через pngout.exe
3. pngout.exe /k0 /f%f% - идет оптимизация через pngout.exe, раньше использовал параметр /n# (n=2), но по рекомендации Ken Silverman (создатель PngOut) удален
4. дальше идут advpng.exe -z -4 и deflopt.exe

Для PNG Adam7 (Interlaced) использую только optipng.exe -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 и deflopt.exe

Хотел знать есть ли возможность улучшить мой алгоритм, Ваша программа иногда превосходит мой алгоритм, и мне просто интересно какой у вас алгоритм?

Это сообщение отредактировал(а) lorents - 16.7.2010, 19:46


--------------------
PM MAIL   Вверх
x128
Дата 16.7.2010, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 29.9.2009

Репутация: 5
Всего: 7



Цитата(lorents @  16.7.2010,  19:41 Найти цитируемый пост)
...протестировал Ваш код, он работает (значение порога = 1)

Значение 1 это как в статье, при значении 0 изменения не внося т.е. оригинал, все остальные значения позволяют отсечь "левые" пикселы. Для картинки Comic Book Guy.png значение порога должно быть 255, для ff-logo-big.png значение должно быть 1 т.к. там изначально правильный альфа-канал.

Цитата(lorents @  16.7.2010,  19:41 Найти цитируемый пост)
...могли бы Вы модернизировать, если это возможно, и сделать так, чтобы работал через командную строку?

Не проблема, к тому, что есть добавить или отдельно консольное приложение нужно?

Цитата(lorents @  16.7.2010,  19:41 Найти цитируемый пост)
3. pngout.exe /k0 /f%f% - идет оптимизация через pngout.exe, раньше использовал параметр /n# (n=2), но по рекомендации Ken Silverman (создатель PngOut) удален

Мне кажется, что ключ /ks будет не лишним =)
Хотя... как показали мои эксперименты, лучший фильтр для него понятие не растяжимое т.е. лучший фильтр для optipng  не всегда лучший для pngout.

Цитата(lorents @  16.7.2010,  19:41 Найти цитируемый пост)
Хотел знать есть ли возможность улучшить мой алгоритм, Ваша программа иногда превосходит мой алгоритм, и мне просто интересно какой у вас алгоритм?

Не уверен, что получится сильно улучшить. С PNG24 особых хитростей нет, проверить на количество используемых цветов и в случае <=256 пробовать записать как PNG8 ну и конечно фильтры, возможно у меня получается лучше их подобрать. С PNG8 ситуация немного другая, тут уже больше возможных вариантов, помимо фильтров и попыток записать как PNG24, очень большую роль играет порядок цветов в палитре. В CQ я не сильно гоняю оптимизаторы с разными ключами, обычно я им передаю уже готовую картинку без дополнительных параметров, исключение только при записи брутом.


Это сообщение отредактировал(а) x128 - 16.7.2010, 20:43
PM MAIL WWW   Вверх
lorents
Дата 16.7.2010, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



x128, 
Цитата(x128 @  16.7.2010,  20:26 Найти цитируемый пост)
Значение 1 это как в статье, при значении 0 изменения не внося т.е. оригинал, все остальные значения позволяют отсечь "левые" пикселы. Для картинки Comic Book Guy.png значение порога должно быть 255, для ff-logo-big.png значение должно быть 1 т.к. там изначально правильный альфа-канал.

Я даже об этом и не подумал, а как это можно определить программно?

Цитата(x128 @  16.7.2010,  20:26 Найти цитируемый пост)
Не проблема, к тому, что есть добавить или отдельно консольное приложение нужно?

Отдельное консольное приложение, если Вас не затруднит.

Цитата(x128 @  16.7.2010,  20:26 Найти цитируемый пост)
Мне кажется, что ключ /ks будет не лишним =)

Так и сделаю smile 

Цитата(x128 @  16.7.2010,  20:26 Найти цитируемый пост)
Хотя... как показали мои эксперименты, лучший фильтр для него понятие не растяжимое т.е. лучший фильтр для optipng  не всегда лучший для pngout.

я так и не нашел способа, как без перебора через pngout, можно определить наилучший фильтр для pngout.

Цитата(x128 @  16.7.2010,  20:26 Найти цитируемый пост)
В CQ я не сильно гоняю оптимизаторы с разными ключами, обычно я им передаю уже готовую картинку без дополнительных параметров, исключение только при записи брутом.

а можно поподробнее?

Смотрите, есть картинка, Ваша программу оптимизирует сразу наименьший размер, а мой алгоритм только при повторной оптимизации, не знаете, почему так и как это исправить?

а какой алгоритм вы используете для PNG Adam7 (Interlaced)? Я там ошибся, я использую optipng.exe -i1 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 и deflopt.exe, т.к. pngout и advpng не поддерживают PNG Adam7 (Interlaced)

И еще один вопрос, как Вы дкмаете стоит ли сохранять все картинки в цветовой профиль sRGB?

Я очень рад наше встречи на просторах интернета smile 
Если хотите, мы можен перенести наш разговор по электронной почте ([email protected])

Так же высылаю Вам мой алгоритм оптимизации

Это сообщение отредактировал(а) lorents - 16.7.2010, 23:31

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Image_Optimizer_1.2.0.0.rar 530,82 Kb


--------------------
PM MAIL   Вверх
lorents
Дата 16.7.2010, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



забыл спросить, это система удаление "грязных" пикселей, не всегда уменьшает размер картинки
http://www.artlebedev.ru/tools/technogrette/img/png-4/
а иногда и увеличивает размер, отсюда вытекает два вопроса:
1. можно ли сразу определить поможет это функция уменьшению размера картинки или нет;
2. как можно отменить действие этой функции.


--------------------
PM MAIL   Вверх
AntonN
Дата 17.7.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



провести опыт на копии изображения и сравнить


--------------------
user posted image
PM MAIL WWW   Вверх
lorents
Дата 17.7.2010, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



AntonN, это слишком долго smile  если у тебя много картинок


--------------------
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.