我有一个 HTML此问题的测试页在这里。因为某些原因MobileSafari 正在报告Image.width/height
任何超过 1700 像素的图像的属性为其值的一半。那就是width
例如,JPG 的属性是 2000,但 MobileSafari JavaScript 将其报告为 1000。如果我尝试使用相同的代码处理 1700 像素宽的图像,我会得到正确的宽度。
The test我确实加载了两个图像(不同尺寸的同一图像)并显示 JavaScript 大小值。我尝试过:
- Chrome 22、Safari 5.1.7、Firefox 15.0.1 均在 Mac OS X 10.6.8 中(正确大小)
- iOS Simulator 4.3 SDK 3.2(大小不正确)
- 装有 iOS 5.1 的 iPad 2(尺寸不正确)
- 装有 iOS 5.1 的 iPhone 4S(尺寸不正确)
有什么想法为什么会发生这种情况吗?我是否缺少某个地方的设置?为什么它适用于某些图像但不适用于其他图像?
测试在这里:http://still-island-1941.herokuapp.com/sizetest.html
这是 JavaScript 代码:
var imgBig, imgSmall;
function init() {
imgBig = new Image();
imgBig.onload = handleBig;
imgBig.src = "/images/size.jpg";
imgSmall = new Image();
imgSmall.onload = handleSmall;
imgSmall.src = "/images/test1.jpg";
document.getElementById("browser").innerHTML = navigator.userAgent;
}
function handleBig() {
document.getElementById("dimensionsBig").innerHTML = imgBig.width + "x" + imgBig.height;
document.getElementById("testBig").src = imgBig.src;
}
function handleSmall() {
document.getElementById("dimensionsSmall").innerHTML = imgSmall.width + "x" + imgSmall.height;
document.getElementById("testSmall").src = imgSmall.src;
}
这是 HTML 代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MobileSafari image dimensions test</title>
</head>
<body onload="init()">
<p>your browser: <strong><span id="browser"></span></strong></p>
<p>big image dimensions: <strong><span id="dimensionsSmall"></span></strong> (should be 1700x1134)</p>
<img id="testSmall" />
<p>small image dimensions: <strong><span id="dimensionsBig"></span></strong> (should be 2000x1334)</p>
<img id="testBig" />
</body>
</html>
是的,它存在尺寸和重量的限制。
由于 iOS 上的可用内存,它可以处理的资源数量受到限制:
最大尺寸为decoded对于 RAM 小于 256 MB 的设备,GIF、PNG 和 TIFF 图像为 3 兆像素;对于 RAM 大于或等于 256 MB 的设备,GIF、PNG 和 TIFF 图像为 5 兆像素。
也就是说,确保宽*高≤3*1024*1024适用于 RAM 小于 256 MB 的设备。
注意解码后的大小远大于编码后的大小图像的:
最大值decodedJPEG 图像大小为 32 兆像素,使用
二次抽样。 JPEG 图像可达 32 兆像素,因为
子采样,允许 JPEG 图像解码为具有 1 的大小
第十六为像素数。大于 2 兆像素的 JPEG 图像
被二次采样,即解码为减小的尺寸。 JPEG二次采样
允许用户查看来自最新数码相机的图像。
对于具有以下功能的设备,画布元素的最大尺寸为 3 兆像素
小于 256 MB RAM 和 5 兆像素的设备
等于 256 MB RAM。画布对象的高度和宽度为 150
x 300 像素(如果未指定)。
一些可能有帮助的链接:
-
苹果官方网站:检查了解 iOS 资源限制部分
-
分析及解决方法见评论
- 解决方法
Cheers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)