Кто-нибудь знает программу / метод для сжатия только определенных частей изображения PNG без его нарезки? - PullRequest
1 голос
/ 21 апреля 2009

Пожалуйста, помогите! Заранее спасибо.


Обновление: Извините за задержку с ответом, но если это полезно, чтобы предоставить больше контекста здесь, так как я не уверен, какой альтернативный вопрос я должен задать.

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

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

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

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

Ответы [ 2 ]

1 голос
/ 21 апреля 2009

Вы не можете - вы можете сжать только весь файл PNG.

Вам не нужно (я не могу вспомнить ни одного случая, когда было бы полезно сжатие определенной части файла PNG)

Разделение изображения на несколько частей («нарезка») - это только способ сжатия различных частей файла изображения, хотя я бы даже рекомендовал снова использовать разные уровни сжатия в одном «нарезанном изображении» ", поскольку объединение различных артефактов сжатия, вероятно, будет выглядеть странно

Что касается вашего обновления,

определяет критические области изображения, которые «сжимают меньше» и могут сжимать другие части изображения больше, чтобы уменьшить размер файла

По сути, это то, что делает сжатие изображения - если есть немного пустая область, она будет сжата до нескольких байтов (например, используя RLE ), но если есть очень подробная область, у нее будет больше байтов. "потрачено" на это.

Проблема звучит так, как будто изображение слишком большое (с точки зрения размера файла), пробовали ли вы другие форматы изображений, в основном GIF или JPEG (или другой формат PNG, PNG-8 или PNG-24)?

Я сжал изображение настолько сильно, насколько смог, не ставя под угрозу внешний вид этого текста

Возможно, текст может быть наложен с помощью CSS, а не встроен в изображение? Может быть непрактичным, но это позволит вам сжимать фон больше (если фоновое изображение - это фотография, JPEG может работать лучше, так как вам больше не нужно беспокоиться о тексте)

Кроме этого, у меня нет идей. 300 * 300px PNG действительно слишком большой?

0 голосов
/ 30 мая 2009

Звучит так, будто вы сжимаете части изображения с помощью чего-то вроде JPEG, а затем вставляете эти сжатые изображения в PNG в сочетании с другими изображениями, и весь PNG отправляется в браузер, где вы разделяете их.

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

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

PNG сжимает каждую строку отдельно, если только вы не использовали «предиктор» в сжатии.

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

Возможно, загрузить пример изображений, с которыми вы работаете?

...