Всё, punypng по сравнению с этим фигня, но они только оптимизировали. А эти перегоняют в более лёгкий формат — все картинки что протестил ужались минимум на 64%, среднее 70% экономии для 24 битных PNG.
Так да, но зато у них ограничение в 150KB :( Мне вот помешало это пару картинок оптимизировать сейчас когда тестировал.
Я просто брал заливал по 20 картинок за заход на tinypng.org. Ограничение кстати касается только единовременной заливки, а если обработалось 20 штук и залить ещё 20 без обновления страницы — всё отлично пашет. Минус только один — нельзя скачать архивом всё сразу.
punypng.com отказался глотать тестовый файл из-за того, что размер оказался выше 150 кб.
А TinyPNG сделал сразу. Файл уменьшился в весе на 54%. При чем я разницы не вижу. Вот исходник, 267 кб, вот результат, 124 кб. А вот результат на сайте. Я не вижу ухудшений.
Ну, вообще, да, сейчас заметил внизу в тенях недостатки. Это, кстати, и есть самое узкое место, потому что сверху все ясно − там нет полупрозрачности и цвета близкие по оттенку. А внизу тени, при чем сделанные именно полупрозрачностью процентов на 20%. Макет спасает то, что внизу подложка серая с вактуркой. Если бы фон был более контрастный, то недостатки были бы более заметны.
Умеет, да. Но стоит около $300, если не ошибаюсь. К тому же иногда, к сожалению, конвертировать приходится не дизайнеру, а другому человеку, к тому же после запуска проекта, когда (внезапно!) оказывается, что сочные странички с оригинальной нарезкой слишком долго грузятся на телефонах или жрут трафик. Сервис может оказаться полезным.
Простите, конечно, но на мой скромный взгляд, Adobe Fireworks — единственная программа от Adobe, которая должна быть нужна веб-дизайнеру в его непосредственной работе.
Для теста сделал градиент о белого к прозрачному, закинул в tinypng, выдал пнг8 без полупрозрачностей. И разве в пнг8 есть полупрозрачность? По-моему только 2 состояния прозрачный и не прозрачный.
Вот да, пару примеров нашел, и тут скинули симпатичный глазик =), на сайте с полупрозрачностью, а открываешь в acdsee, фотошопе — прозрачность пропадает. Для меня это открытие)
Пикселы остаются прозрачными, причём на глаз без дефектов (как в случае если сохранять в png8 в Photoshop-е), а размер уменьшается солидно. У меня получилось сжать 108KiB файл в 36KiB. Был правда и 1 мелкий png, где размер увеличился на 10% :)
optiPNG пользуюсь постоянно, даже одно время прикручивал его к mapnik, пока нагрузка была не велика, а вот про pngquant и advpng узнал впервые. Спасибо, будем пробовать.
Из этого ничего хорошего не получится. Если просто дропнуть а-канал, то вылезут артефакты связанные с оптимизацией размера — то место где альфа 255 может иметь какой-то цвет (который при н/у будет прозрачным). Для всего остального есть pngcrush
Фотошоп (начиная с cs4) так и делает. Да и все остальные вменяемые утилиты, думаю тоже. Это если говорить о 32bit RGBA. Если речь о Paletted RGBA (как в статье), то это выполняется by design — полностью прозрачному будет соответствовать один цвет из палитры.
Про pngcrush я даже вам сначала не поверил. Уж слишком очевидная оптимизация, чтоб её не сделать. Но, вы правы, я проверил, pngcrush не убивает цвета в полностью прозрачных областях. :-\
pS: Фотошоп, кстати, эти области упрощает до минимальных описанных прямоугольников.
Ну, теоретически такую утилиту вполне можно написать самостоятельно, используя ImageMagick например. Грубо, это решается следующим образом:
— исходное изображение разделяется на RGB- изображение и альфа-канал
— альфа-канал обрабатывается так, чтобы все, что светлее черных пикселей, стало белым (есть разные пути) и сохраняется в еще один файл, назовем его «маской полной прозрачности»
— делаем из альфа-канала еще одну копию, сконвертировав его из восьмибитного greyscale в RGB
— теперь, используя эту маску, накладываем сконвертированный в RGB альфа-канал на исходное RGB-изображение, но не как канал прозрачности, а как обычную картинку
— возвращаем в получившуюся картинку исходный альфа-канал.
Все это дает нам вот что: там, где в канале прозрачности был ноль, мы получили 0,0,0 как-бы скопировав значение A в R,G,B
Способ может быть несовершенен или не слишком оптимален, но реализуется просто batch (или bash) скриптом на готовой команде convert из ImageMagick.
Пользуюсь PngOutWin. Ставишь в очередь хоть по 300 файлов любого размера. Оптимизированный пример с сайта tinypng.org/images/example-shrunk-ec364794.png уменьшила еще на 1 кб. А так, конечно, полезно если нет программы под рукой сжимать в онлайне.
Конвертация PNG24/32 в PNG8 с сохранением прозрачности