gzip 动态将图像转换为 bmp 图像?

gzip 动态将图像转换为 bmp 图像?

我还没有决定采用哪种技术,但我想问一下。BMP 图像很大,我将 3mb 的图像压缩到 50k。浏览器可以解码 gzip 文本,那么是否可以在我的服务器上对 bmp 进行 gzip 压缩,并让用户请求 mysite.com/images/test.bmp,然后让它在另一端解压缩我的 gzip bmp,这样用户就不会注意到差异?

答案1

如果可能的话,使用巴布亚新几内亚作为图像格式。它是无损图像压缩的事实标准,并且可能超越仅通过 gzip 压缩位图所达到的压缩级别。

如果由于对旧系统的依赖而需要使用 BMP,则可以尝试使用输出压缩您的网络服务器中可用的方法,例如参见mod_deflate对于 Apache。Wireshark在测试/调试此类设置时尤其有用。

答案2

发送前先进行 Gzip 压缩。好的网络服务器(Apache、NGINX 和 lighttpd)都支持在磁盘上保存“image.bmp.gz”,如果浏览器支持,则发送该文件而不是“image.bmp”。在 apache 的 .htaccess 中添加以下内容:“AddEncoding x-gzip .gz”。我非常讨厌人们认为动态压缩文件真的可以节省任何东西。

实际上,您应该只使用 PNG,因为它们是经过 gzip 压缩的 BMP,有时还会附带 alpha 通道。创建这种格式是为了让人们停止使用 GIF,GIF 的压缩算法曾经是,现在可能仍受 Unisys 的专利保护。哦,bmp.gz 和 png 的压缩效果一样好。

答案3

使用 apache 和 mod_gzip 或 mod_deflate 时,如果客户端接受 gzip 内容,apache 将提供 gzip 文件。您甚至可以添加 file.gz 与原始文件配对,以帮助 apache 进行 gzip 压缩。

如果您不想托管原始文件,通常 apache 会对 .bmp 请求返回 404 错误。(您没有该文件,对吧?)。但是借助 apache mod_rewrite,您可以添加一些重写规则来提供 gzip 压缩的 bmp,而不是返回 404 错误。

示例(未经测试的)重写规则:

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

答案4

来自 mod_gzip 的 sourceforge.net 页面:

“mod_gzip 是流行的 Apache Web 服务器的互联网内容加速模块。它压缩传送到客户端的内容。无需在客户端上安装任何其他软件!”

我认为它基本上会压缩它发送的所有内容,除了已经压缩的内容,例如 JPG 或 GIF 等。我认为它通常在默认的 Apache 安装中启用,但您可以通过 Google 搜索文档。

相关内容