Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MobileSafari未通过JavaScript返回正确的图像大小信息_Javascript_Image_Mobile Safari - Fatal编程技术网

MobileSafari未通过JavaScript返回正确的图像大小信息

MobileSafari未通过JavaScript返回正确的图像大小信息,javascript,image,mobile-safari,Javascript,Image,Mobile Safari,我有一个HTML。出于某种原因,MobileSafari正在报告任何图像的图像。宽度/高度属性,超过1700像素为其值的一半。也就是说,JPG的width属性是,比如说,2000,但mobilesafarijavascript将其报告为1000。如果我用1700像素宽的图像尝试相同的代码,我会得到正确的宽度 我确实加载了两个图像(不同维度的相同图像)并显示JavaScript大小值。我试过: Chrome 22、Safari 5.1.7、Firefox 15.0.1均采用Mac OS X 10

我有一个HTML。出于某种原因,MobileSafari正在报告任何图像的
图像。宽度/高度
属性,超过1700像素为其值的一半。也就是说,JPG的
width
属性是,比如说,2000,但mobilesafarijavascript将其报告为1000。如果我用1700像素宽的图像尝试相同的代码,我会得到正确的宽度

我确实加载了两个图像(不同维度的相同图像)并显示JavaScript大小值。我试过:

  • Chrome 22、Safari 5.1.7、Firefox 15.0.1均采用Mac OS X 10.6.8(正确大小)
  • iOS模拟器4.3 SDK 3.2(大小不正确)
  • 带iOS 5.1的iPad 2(尺寸不正确)
  • 带iOS 5.1的iPhone 4S(尺寸不正确)
知道为什么会这样吗?我是不是错过了一个场景?为什么它可以处理一些图像而不能处理其他图像

测试如下:

这是JavaScript代码:

var-imgBig,imgSmall;
函数init(){
imgBig=新图像();
imgBig.onload=把手IG;
imgBig.src=“/images/size.jpg”;
imgSmall=新图像();
imgSmall.onload=把手小;
imgSmall.src=“/images/test1.jpg”;
document.getElementById(“浏览器”).innerHTML=navigator.userAgent;
}
函数handleBig(){
document.getElementById(“dimensionsBig”).innerHTML=imgBig.width+“x”+imgBig.height;
document.getElementById(“testBig”).src=imgBig.src;
}
函数handleSmall(){
document.getElementById(“dimensionsSmall”).innerHTML=imgSmall.width+“x”+imgSmall.height;
document.getElementById(“testSmall”).src=imgSmall.src;
}
这是HTML代码:


MobileSafari图像尺寸测试
您的浏览器:

大图像尺寸:(应为1700x1134)

小图像尺寸:(应为2000x1334)


是的,它的尺寸和重量都有限制

由于iOS上的可用内存,它可以处理的资源数量受到限制:

解码的GIF、PNG和TIFF图像的最大大小对于内存小于256 MB的设备为300万像素,对于内存大于或等于256 MB的设备为500万像素。 也就是说,确保宽度*高度≤ 3*1024*1024适用于RAM小于256 MB的设备。 请注意,解码大小远远大于图像的编码大小:

JPEG的最大解码图像大小为3200万像素,使用 二次抽样。由于以下原因,JPEG图像最高可达3200万像素 子采样,允许JPEG图像解码为具有一个 十六像素数。大于200万像素的JPEG图像 被二次采样,也就是说,被解码成更小的尺寸。JPEG子采样 允许用户查看最新数码相机的图像

对于具有以下特性的设备,画布元素的最大大小为300万像素: 小于256 MB RAM和500万像素(适用于具有更大或更高容量的设备) 等于256 MB内存。画布对象的高度和宽度为150 x 300像素(如果未指定)

一些可能有帮助的链接:

  • :检查了解iOS资源限制部分

干杯

我不确定这是否是我出现上述问题的原因,因为正如您在我制作的图片中所看到的,“大”图像是2000x1334=2668000,小于3x1024x1024=3145728像素。请尝试降低图片的质量(权重)以查看它是否改变了某些内容。你有没有尝试过我提供的解决方法,看看它是否改变了什么?我上传了一个新的“大”文件,它被压缩了(20%的质量),看起来很糟糕。。。72kb(压缩)。。。MobileSafarith报告的尺寸仍然没有变化最大尺寸适用于解码图像-注释中有一个解决方案。。。我知道。。。我是在回答你的“尝试降低图片的质量(重量),看看它是否改变了什么。”在我的例子中,我加载了一幅3000px正方形的图片,iOS中的Javascript告诉我onload事件触发正常,但当时报告的高度和宽度为零。我想我也有同样的问题。