我还没有决定一个技术,但我想问。 BMP图像很大,我压缩了一个3MB的图像到50K。 浏览器可以解码gzip文本,所以可以在我的服务器上gzip bmp,并让用户请求mysite.com/images/test.bmp,并让它在另一边解压我的gzip bmp,这样用户不会注意到区别?
如果可能,请使用PNG作为图像格式。 这是无损图像压缩的事实标准,可能会超过仅通过gziping位图实现的压缩级别。
如果因为遗留系统的依赖性而需要使用BMP,则可以尝试使用Web服务器中可用的输出压缩方法,例如,请参阅Apache的mod_deflate 。 Wireshark在testing/debugging这样的设置时特别有用。
Gzip发送之前。 好的networking服务器(Apache,NGINX,可能是lighttpd)都支持在磁盘上有一个'image.bmp.gz',如果浏览器支持的话,发送它而不是'image.bmp'。 把这个添加到apache的.htaccess中:“AddEncoding x-gzip .gz”。 我fraggin'讨厌它时,人们认为压缩文件即时保存任何东西。
真的,你应该只使用PNG,因为它们是gzipped BMP,有时也会引入一个alpha通道。 这种格式是为了让人们停止使用GIF而devise的,他们的压缩algorithm是,而且可能还在Unisys的专利之下。 哦,和一个bmp.gz和PNG将同样压缩。
使用apache和mod_gzip或mod_deflate,如果客户端接受gzip内容,apache将提供gzip文件。 即使你可以添加一个file.gz配对与原始文件帮助apache与gzipping。
如果你不想托pipe原始文件,通常apache将用404作为回应.bmp请求。 (你没有这个文件吗?)。 但有了Apache mod_rewrite的帮助,你可以添加一些重写规则来服务gzip bmp,而不是返回一个404错误。
示例(和未经testing)重写规则:
RewriteEngine On RewriteCond %{HTTP:Accept-Encoding} gzip RewriteRule ^(.*).bmp$ $1.bmp.gz
我不知道我的testing是否具有代表性:我使用gzip压缩了一个本地bmp文件,并试图用Safari和Firefox在Mac OS X上打开它:它不起作用(带或不带.gz扩展名)。
来自mod_gzip的sourceforge.net页面:
“mod_gzip是stream行的Apache Web服务器的Internet Content Acceleration模块,它压缩了传送给客户端的内容,不需要在客户端安装任何额外的软件!
我认为它基本上压缩了它发送的所有东西,除了已经压缩的东西,比如JPG或者GIF等,我认为它通常在默认的Apache安装中启用,但是你可以在Google上search文档。
嗯,有趣的ziproxy http://ziproxy.sourceforge.net/似乎gzip“文字喜欢”,并将图像转换为JPEG。
我可以看到可能的问题压缩bmps – 可能压缩不好,或者快速,例如。 当然转换到另一种格式是更多的浏览器兼容。 正如所build议的,PNG将支持您需要的一切,如果您可以在应用程序中破解有损压缩,jpeg可能会这样做。
不要在此引用我,但我相当肯定你可以自动化这个,并在飞行中转换。 我会倾向于运行(夜间?)作业,转换bmps(使用“转换”,如果你在unix),并重写链接。
给我们多一点“为什么”,我们可能会得到一个更好的“如何”:)
你的bmp从哪里来,他们如何被服务器,什么平台等?