user274 Asked: 2009-05-31 12:08:07 +0800 CST2009-05-31 12:08:07 +0800 CST 2009-05-31 12:08:07 +0800 CST 即时gzip到bmp图像? 772 我还没有决定技术,但我想问。BMP 图像很大,我将 3mb 图像压缩到 50k。浏览器可以解码 gzip 文本,因此是否可以在我的服务器上 gzip bmp 并让用户请求 mysite.com/images/test.bmp 并让它在另一侧解压缩我的 gzip bmp,这样用户就不会注意到差异? gzip images 6 个回答 Voted Michael Renner 2009-05-31T13:02:55+08:002009-05-31T13:02:55+08:00 如果可能,请使用PNG作为图像格式。它是无损图像压缩的事实标准,可能会超过仅通过 gzip 压缩位图所达到的压缩级别。 如果由于遗留系统的依赖性而需要使用 BMP,您可以尝试使用 Web 服务器中可用的输出压缩方法,例如,请参阅Apache 的mod_deflate。Wireshark在测试/调试此类设置时特别有用。 RandomMan 2009-08-11T02:12:53+08:002009-08-11T02:12:53+08:00 发送前 Gzip。好的网络服务器(Apache、NGINX 和可能的 lighttpd)都支持在磁盘上有一个“image.bmp.gz”,如果浏览器支持,则发送它而不是“image.bmp”。将此添加到 apache 中的 .htaccess:“AddEncoding x-gzip .gz”。当人们认为动态压缩文件真的可以节省任何东西时,我非常讨厌它。 确实,您应该只使用 PNG,因为它们是经过 gzip 压缩的 BMP,有时还带有 alpha 通道。创建该格式是为了让人们停止使用 GIF,其压缩算法曾经并且可能仍在 Unisys 的专利下。哦,bmp.gz 和 png 的压缩效果一样好。 fsniper 2009-05-31T14:45:15+08:002009-05-31T14:45:15+08:00 使用 apache 和 mod_gzip 或 mod_deflate,如果客户端接受 gzip 压缩的内容,apache 将提供 gzip 文件。甚至您可以添加一个 file.gz 与原始文件配对,以帮助 apache 进行 gzipping。 如果您不想托管原始文件,通常 apache 会以 404 响应 .bmp 请求。(你没有那个文件吗?)。但是在 apache mod_rewrite 的帮助下,您可以添加一些重写规则来提供 gzipped bmp 而不是返回 404 错误。 示例(和未经测试的)重写规则: RewriteEngine On RewriteCond %{HTTP:Accept-Encoding} gzip RewriteRule ^(.*).bmp$ $1.bmp.gz mouviciel 2009-05-31T12:42:23+08:002009-05-31T12:42:23+08:00 我不确定我的测试是否具有代表性:我用 Safari 和 Firefox 压缩了一个本地bmp文件gzip并尝试在 Mac OS X 上打开它:它不起作用(有或没有.gz扩展名)。 Monty Burns 2009-05-31T13:04:14+08:002009-05-31T13:04:14+08:00 从 mod_gzip 的 sourceforge.net 页面: “mod_gzip 是流行的 Apache Web 服务器的 Internet 内容加速模块。它压缩交付给客户端的内容。无需在客户端上安装任何额外的软件!” 我认为它基本上压缩了它发送的所有内容,除了已经压缩的任何内容,例如 JPG 或 GIF 等。我认为它通常在默认的 Apache 安装中启用,但你可以谷歌搜索文档。 Tom Newton 2009-05-31T14:43:57+08:002009-05-31T14:43:57+08:00 嗯,有趣的是 ziproxy http://ziproxy.sourceforge.net/似乎 gzip “喜欢的文本”并将图像转换为 jpeg。 我可以看到压缩 bmps 的可能问题 - 例如,可能压缩得不好或压缩得快。当然,转换为另一种格式更兼容浏览器。正如建议的那样,PNG 将支持您需要的一切,如果您可以在应用程序中破解有损压缩,则 jpeg 可能会支持。 不要引用我的话,但我很确定你可以自动化这个并即时转换。我倾向于运行一个(每晚?)转换 bmps 的工作(如果你在 unix 上使用“转换”)并重写链接。 给我们更多的“为什么”,我们可能会得到更好的“如何”:) 你的 bmps 来自哪里,它们是如何服务的,什么平台等等?
如果可能,请使用PNG作为图像格式。它是无损图像压缩的事实标准,可能会超过仅通过 gzip 压缩位图所达到的压缩级别。
如果由于遗留系统的依赖性而需要使用 BMP,您可以尝试使用 Web 服务器中可用的输出压缩方法,例如,请参阅Apache 的mod_deflate。Wireshark在测试/调试此类设置时特别有用。
发送前 Gzip。好的网络服务器(Apache、NGINX 和可能的 lighttpd)都支持在磁盘上有一个“image.bmp.gz”,如果浏览器支持,则发送它而不是“image.bmp”。将此添加到 apache 中的 .htaccess:“AddEncoding x-gzip .gz”。当人们认为动态压缩文件真的可以节省任何东西时,我非常讨厌它。
确实,您应该只使用 PNG,因为它们是经过 gzip 压缩的 BMP,有时还带有 alpha 通道。创建该格式是为了让人们停止使用 GIF,其压缩算法曾经并且可能仍在 Unisys 的专利下。哦,bmp.gz 和 png 的压缩效果一样好。
使用 apache 和 mod_gzip 或 mod_deflate,如果客户端接受 gzip 压缩的内容,apache 将提供 gzip 文件。甚至您可以添加一个 file.gz 与原始文件配对,以帮助 apache 进行 gzipping。
如果您不想托管原始文件,通常 apache 会以 404 响应 .bmp 请求。(你没有那个文件吗?)。但是在 apache mod_rewrite 的帮助下,您可以添加一些重写规则来提供 gzipped bmp 而不是返回 404 错误。
示例(和未经测试的)重写规则:
我不确定我的测试是否具有代表性:我用 Safari 和 Firefox 压缩了一个本地
bmp
文件gzip
并尝试在 Mac OS X 上打开它:它不起作用(有或没有.gz
扩展名)。从 mod_gzip 的 sourceforge.net 页面:
“mod_gzip 是流行的 Apache Web 服务器的 Internet 内容加速模块。它压缩交付给客户端的内容。无需在客户端上安装任何额外的软件!”
我认为它基本上压缩了它发送的所有内容,除了已经压缩的任何内容,例如 JPG 或 GIF 等。我认为它通常在默认的 Apache 安装中启用,但你可以谷歌搜索文档。
嗯,有趣的是 ziproxy http://ziproxy.sourceforge.net/似乎 gzip “喜欢的文本”并将图像转换为 jpeg。
我可以看到压缩 bmps 的可能问题 - 例如,可能压缩得不好或压缩得快。当然,转换为另一种格式更兼容浏览器。正如建议的那样,PNG 将支持您需要的一切,如果您可以在应用程序中破解有损压缩,则 jpeg 可能会支持。
不要引用我的话,但我很确定你可以自动化这个并即时转换。我倾向于运行一个(每晚?)转换 bmps 的工作(如果你在 unix 上使用“转换”)并重写链接。
给我们更多的“为什么”,我们可能会得到更好的“如何”:)
你的 bmps 来自哪里,它们是如何服务的,什么平台等等?