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

Поиск:

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


Опытный
**


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

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



в каком смысле "проиграл"?


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


Опытный
**


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

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



По умолчанию zlib в png имеет уровнь компрессии 7 (0..9), можно установить в 9, тогда продавец комиксов будет весить 85,6кб (против выложенного 87,3кб), логотип все так же чуть больше.
Чтобы получить более значительную прибавку (точнее убавку smile ) по размеру нужно уже ковырять палитру, разбираться с дизерингом.

Это сообщение отредактировал(а) AntonN - 13.7.2010, 14:57


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


Опытный
**


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

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



AntonN, я имел ввиду кое-что другое

Здесь не стоит вопрос оптимизации. Здесь главное улучшить твой код, чтобы он работал как PunyPng, в частности удалял прозрачные пиксели.
Если Ты это сделаешь, буду очень признателен

Это сообщение отредактировал(а) lorents - 13.7.2010, 15:27


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


Опытный
**


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

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



Куда же ты их удалишь? Ну я дал код где прозрачные пиксели имеют черый цвет. Точнее можно вообще залить любым цветом, оно все равно невидимое.


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


Опытный
**


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

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



AntonN, как же тебе объяснить, видимо какие-то пиксели не удаляются
вот этих двух картинок, эта проблема



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


Опытный
**


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

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



Выложи две одинаковые картинки, одну исходник нетронутый, и второй через этот PunyPng сохраненный.
png это не только пиксели, и не просто кусок памяти сжатый архиватором, возможно PunyPng оптимизирует палитру, работает с чанками.


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


Опытный
**


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

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



AntonN, 
Цитата(AntonN @  13.7.2010,  19:58 Найти цитируемый пост)
png это не только пиксели, и не просто кусок памяти сжатый архиватором, возможно PunyPng оптимизирует палитру, работает с чанками. 

в данном случаи, это пиксели, у меня есть специальный алгоритм для оптимизации PNG. и это выявил, т.к. он оптимизирует с 0. 

Вот картинки

Присоединённый файл ( Кол-во скачиваний: 31 )
Присоединённый файл  Image.rar 142,01 Kb


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


Опытный
**


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

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



AntonN, ты не смотрел случайно?


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


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

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



Цитата(lorents @  13.7.2010,  20:22 Найти цитируемый пост)
в данном случаи, это пиксели, у меня есть специальный алгоритм для оптимизации PNG. и это выявил, т.к. он оптимизирует с 0. 


Что это вообще значит? Ну вот своим алгоритмом и оптимизируйте, зачем вам другой?
PM MAIL ICQ Skype   Вверх
lorents
Дата 14.7.2010, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Bitter, 
Цитата(Bitter @  14.7.2010,  19:26 Найти цитируемый пост)
Что это вообще значит? Ну вот своим алгоритмом и оптимизируйте, зачем вам другой? 


тот код который написал AntonN, существенно увеличивает уровень оптимизации PNG с альфаканалом


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


Опытный
**


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

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



Да ничего особенного он не делает.
В моем коде ничего сверх сделать не нельзя, чтобы добиться еще меньших размеров файла придется палитру мучать, работать с блоками. Если бы я затратил на это время врядли я бы выложил это в свободный доступ smile


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


Опытный
**


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

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



AntonN, понятно, если передумаете, дайте знать
я кстати сделал все как мне надо через ImageMagick, ни чем ну уступающий PunyPng, но проблема в том, что ImageMagick не понимает кириллицу.

Это сообщение отредактировал(а) lorents - 15.7.2010, 08:59


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


Шустрый
*


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

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



Описанный в статье прием реализуется довольно просто:
Код

procedure RemoveTransparentPixels(PNG: TPNGObject);
var
  x,y: integer;
  ImageSRC: pRGBLine;
  AlphaSRC: pByteArray;
begin
  for y:=0 to PNG.Height-1 do begin
    ImageSRC:=PNG.Scanline[y];
    AlphaSRC:=PNG.AlphaScanline[y];
    for x:=0 to PNG.Width-1 do begin
      if AlphaSRC[x]=0 then begin
        ImageSRC[x].rgbtBlue:=0;
        ImageSRC[x].rgbtGreen:=0;
        ImageSRC[x].rgbtRed:=0;
      end;
    end;
  end;
end;

Но! Для картинки Comic_Book_Guy эти действия не сильно помогают т.к. судя по характерному контуру, изначально изображение не имело альфа-канала. Конкретно для этой картинки можно изменить условие "if AlphaSRC[x]=0" на "if AlphaSRC[x]<>255", результат 61,5 кб для PNG24 и 24,5 кб для PNG8.


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  Comic_Book_Guy_24.png 61,57 Kb
PM MAIL WWW   Вверх
lorents
Дата 16.7.2010, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



x128, а можно скомпилированный проект, если Вас это не затруднит


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


Шустрый
*


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

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



держи

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  PNGKT.zip 215,83 Kb
PM MAIL WWW   Вверх
Страницы: (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.1033 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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