如何处理高清网络图片以适应高分辨率显示器(主要是iOS的Retina显示器)?

8
我有一个利用jQuery Mobile的移动网站,然而在iPhone 4/4S上,图片看起来很糟糕。我认为当“新iPad”在本周晚些时候推出时,情况也会是如此。
我知道这与像素比和/或图像DPI(或PPI或您想称呼它的任何东西...让我们不要讨论这个问题)有关。我只想知道为这些iOS retina显示器提供高分辨率Web图像的最佳方法是什么。
起初,我认为更改图像DPI(在Photoshop中)可以解决问题。我拍了一些样本图像,并将它们缩小到190px宽度。我将一张图像保存为72 DPI,另一张保存为200 DPI。但这没有任何效果。请自行查看(在iPhone 4/4S上):http://haxway.com/restest/1.html 每个底部的图像都是200 DPI的。
然后,我没有将高分辨率图像以200 DPI保存,而是再次将其保存为72 DPI,但这次我增加了宽度(至528px),以便在缩小到190px宽度时,它将达到约200 DPI。这似乎起了作用:http://haxway.com/restest/2.html 如果您查看源代码,可以看到我在图像标记上强制设置了宽度/高度(<img src="w4.jpg" alt="" width="190" height="143">)。
然而,我并不确定这是最佳解决方案。使用宽度/高度属性来缩放图像是否会影响呈现性能,因为设备必须缩放图像而不是仅加载它(并且不再进行任何操作)?
经过一些研究,看起来有一些CSS媒体查询,比如-webkit-min-device-pixel-ratio [1],可以在高分辨率显示器上使用不同的CSS,从而在CSS中加载更高分辨率的图像。但我需要针对HTML <img>标签进行定位。我读过另一篇文章(抱歉,我丢失了链接),建议使用JavaScript将“常规”图像替换为高分辨率图像。那听起来太疯狂了!

有更好的方法吗?我意识到每种方法可能会有不同的意见。如果可以解释每种方法的优缺点,那就太好了!我的目标是使用任何能够最快地呈现的方法(希望不使用某些hacky JavaScript等)。

谢谢!

[1] http://aralbalkan.com/3331


你的样本有点可疑。浏览器所做的是逐像素显示图像。从这个角度来看,你的图像是相似的。200dpi图像的打印尺寸只是更小而已。如果你上传一个包含更多像素的高分辨率相同图像,你会发现浏览器将显示3倍大的图像。这也不是你想要的。 - commonpike
...确切地说,那不是我想要的。那么这种当前方法为什么“可疑”?(不是攻击...只是好奇。) - DJ Tarazona
抱歉如果听起来有冒犯意味。我觉得很困惑,你想要的是同样尺寸但更高分辨率的图片。但你上传了一个较小的图片并提高了分辨率。如果浏览器能够尊重dpi,那么你上传的200dpi图像会小得多。无论如何,感谢你提供测试图片 - 你帮了我一个忙。 - commonpike
2个回答

1

您需要运行某种形式的JS来解决问题。目前我选择使用的是Mat Wilcox的一个JS。它将向屏幕提供正确的图像。这个解决方案的最大优点是它会缓存图像以减轻用户的负担。

http://adaptive-images.com/

目前有一种推动引入新的图片HTML元素的趋势,可以采用多个来源来解决这个问题,但这还需要一段时间。

http://www.w3.org/community/respimg/


1
这相对于在<img>标签中设置widthheight属性并始终提供高分辨率图像有什么优势(就像我的第二个示例)?没有“高分辨率”屏幕的设备仍然可以正常显示图像。我知道它会节省带宽,但还有其他吗?我觉得JavaScript解决方案会更慢,因为它可能会在文档准备好后运行等等。缓存不应该是问题,因为我可以始终适当地设置过期标头。我不是要攻击这个解决方案,我只想知道所有的成本/收益。谢谢! - DJ Tarazona

0

对于图像标签,我认为你已经提供了自己的解决方案。最大的好处是,为所有客户端发送同一张图片。

对于 CSS 图像,你不能做同样的事情吗?忘记笨重的 -webkit-min-device-pixel-ratio,这将要求每次推出新设备时都需要不同的图片。只需发送最大的图片并使用 CSS3 的 background-size 将其缩小即可。我还没有测试过。IE<9 会给你带来问题。

我和你一样,可能会惊讶于 HTML/CSS 还没有提供一个适当的方法来解决这个问题,只有这种 hacky 的解决方法。我也和你一样,困惑于为什么浏览器不遵守图片 DPI 信息。如果有人知道,请留言。

有更好的方法吗?

是的,避免使用位图图像。使用 SVG。


我同意SVG将是更好的解决方案,但目前浏览器支持和性能都不够理想。=/ - DJ Tarazona
更糟糕的是,iPad2在缩小图像方面声名狼藉。它们变得很模糊。我和我的客户已经达成共识,使用132dpi的图像,包括内联和背景。这在Retina屏幕上非常可接受,下载速度也不会太慢。 - commonpike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接