Назад | Перейти на главную страницу

gzip в BMP-изображения на лету?

Я еще не определился с технологией, но хотел спросить. Изображения BMP большие, я сжал изображение с 3 МБ до 50 КБ. Браузеры могут декодировать gzip-текст, поэтому можно ли gzip bmp на моем сервере и запрос пользователя mysite.com/images/test.bmp и распаковка моего gzip bmp на другой стороне, чтобы пользователь не заметил разницы?

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

Если вам нужно использовать BMP из-за зависимости от устаревших систем, вы можете попробовать использовать сжатие на выходе методы, доступные на вашем веб-сервере, например видеть mod_deflate для Apache. Wireshark может быть особенно полезным при тестировании / отладке таких настроек.

Gzip перед отправкой. Все хорошие веб-серверы (Apache, NGINX и, возможно, lighttpd) поддерживают наличие на диске 'image.bmp.gz' и отправку его вместо 'image.bmp', если браузер поддерживает его. Добавьте это в .htaccess в apache: "AddEncoding x-gzip .gz". Я ненавижу, когда люди думают, что сжатие файлов на лету действительно что-то спасает.

На самом деле, вы должны просто использовать PNG, поскольку они представляют собой сжатые файлы BMP, иногда с добавленным альфа-каналом. Формат был создан, чтобы заставить людей отказаться от использования GIF-файлов, у которого был алгоритм сжатия, и, возможно, он все еще находится под патентом Unisys. Да, и bmp.gz, и png сжимаются одинаково хорошо.

При использовании apache и mod_gzip или mod_deflate, если клиент принимает сжатый контент, apache будет обслуживать сжатый файл. Даже вы можете добавить file.gz в пару с исходным файлом, чтобы помочь apache с gzip-сжатием.

Если вы не хотите размещать исходные файлы, обычно apache отвечает 404 на запрос .bmp. (У вас же нет этого файла?). Но с помощью apache mod_rewrite вы можете добавить некоторые правила перезаписи, чтобы обслуживать сжатый bmp, вместо того, чтобы возвращать ошибку 404.

Примеры (и непроверенные) правил перезаписи:

RewriteEngine On
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule ^(.*).bmp$ $1.bmp.gz 

Я не уверен, что мой тест репрезентативен: я сжал локальный bmp файл с gzip и пытался открыть его в Mac OS X с помощью Safari и Firefox: не работает (с или без .gz расширение).

Со страницы sourceforge.net mod_gzip:

"mod_gzip - это модуль ускорения интернет-контента для популярного веб-сервера Apache. Он сжимает содержимое, доставляемое клиенту. Нет необходимости устанавливать какое-либо дополнительное программное обеспечение на клиенте!"

Я думаю, что он в основном сжимает все, что отправляет, за исключением всего, что уже сжато, например, JPG или GIF и т. Д. Я думаю, что это часто включается в установках Apache по умолчанию, но вы можете найти документы в Google.

Хм, интересно ziproxy http://ziproxy.sourceforge.net/ кажется, сжать «лайки» и конвертировать изображения в JPEG.

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

Не цитируйте меня по этому поводу, но я почти уверен, что вы можете автоматизировать это и конвертировать на лету. Я был бы склонен запускать (каждую ночь?) Задание, которое конвертирует BMPS (используйте "convert", если вы используете unix) и переписываете ссылки.

Дайте нам больше «почему», и мы сможем лучше понять «как» :)

Откуда берутся ваши BMP, как они обслуживаются, на какой платформе и т. Д.?