2

我想从网络下载图像并将其设置为用户背景。这在 wi-fi 和某些 3G 网络上非常有效,但其他网络(当然是 T-Mobile UK)似乎在发送图像之前会对其进行压缩。

这种效果在使用浏览器时也很明显 - 但是,如果您长按图像并保存它,在图库中查看时它要么根本没有压缩,要么压缩得更少。我希望能够在我自己的应用程序中做到这一点。

我认为它与 HTTP 标头有关,但在我修改过的标头中,没有一个有所作为。

有谁可以帮我离开这里吗?

Android 的类似问题:BitmapFactory.decodeByteArray 给出像素化位图但未解决。

4

4 回答 4

4

您是否尝试过设置无缓存标头?这可能适用于某些网络。

您也可以尝试让客户端再次请求图像,这也可能会跳过压缩。

于 2010-07-03T09:49:43.917 回答
2

一些 3G 网络正在压缩图像以节省带宽。有时他们甚至不尊重没有缓存的 http 标头。要绕过它们,您可以

  • 使用 data-uri 内联 base 64 图像
  • 将它们作为 https 或通过非标准 http 端口提供服务

关于它的完整讨论:http: //blog.sebcante.com/2012/01/prevent-image-compression-from-3g.html

于 2012-01-15T08:10:41.237 回答
1

no-cache几年前,一些供应商(如德国沃达丰)已停止设置标头。

相反,这些提供商提供了一个 Web 界面,您可以在其中自己调整设置。对于 Vodafone Germany,只需访问performance.vodafone.de,您就会看到基本设置对话框,但您也可以选择“专家设置”选项以获得更精细的控制和高级选项。

基本设置

高级设置

非常欢迎不同提供商和国家或整个列表的链接!

于 2014-02-05T12:25:10.160 回答
0

如果您可以控制用户下载的图像,您可能希望将其放入包含图像的 ZIP 文件中,让您的代码解压缩图像并将其设置为背景。您可以肯定没有网络会以这种方式应用任何降级。

但是,当然,如果您无法控制用户可以从中选择的图库,则此解决方案不适用...

于 2010-07-03T09:55:29.237 回答