Php 远程映像服务器提供的文件与getimagesize访问的文件不同
我有一个网站,我检查图像大小,以便调整周围各种HTML元素的大小。图像URL是通过数据传入的,并且是远程托管的,所以我事先不知道图像的尺寸。我使用的是getimagesize,它似乎工作正常(虽然速度很慢),但现在我看到了一种情况,即我从getimagesize返回的图像维度并不是我最终得到的图像文件的维度。图像URL不是直接指向文件,而是指向提供图像的脚本,因此我假设所提供的图像文件在getimagesize检查和实际下载之间发生了变化 有人处理过这个问题吗?是否有任何服务器端解决方案可以获得正确的维度,或者在图像加载后我是否需要使用JS解决方案?Php 远程映像服务器提供的文件与getimagesize访问的文件不同,php,image,remote-server,Php,Image,Remote Server,我有一个网站,我检查图像大小,以便调整周围各种HTML元素的大小。图像URL是通过数据传入的,并且是远程托管的,所以我事先不知道图像的尺寸。我使用的是getimagesize,它似乎工作正常(虽然速度很慢),但现在我看到了一种情况,即我从getimagesize返回的图像维度并不是我最终得到的图像文件的维度。图像URL不是直接指向文件,而是指向提供图像的脚本,因此我假设所提供的图像文件在getimagesize检查和实际下载之间发生了变化 有人处理过这个问题吗?是否有任何服务器端解决方案可以获得
Brian更好的方法是不设置image.onload,这样一旦加载图像,您就可以获取实际图像大小并调整页面,然后将图像文件下载到临时文件中,然后对该文件调用
getimagesize()
尽管根据中的一条评论,这基本上就是
getimagesize($url)
的工作原理。所以我不知道你为什么会得到不同的维度。如果图像文件正在动态更改,那么PHP脚本似乎无法获得浏览器将看到的大小,因此,您必须使用在加载图像后运行的Javascript解决方案。数据中传递的图像URL具有HTML实体,getimagesize和实际图像下载对其进行了不同的处理。我建议调整CSS,这样您就不必在PHP或JS中处理它。在这里发布HTML代码会有帮助的。对不起,我知道了。图像URL中有HTML实体,它们被getimagesize和实际下载以不同的方式处理。然而,考虑到我使用getimagesize的速度很慢,这两个都是值得研究的好建议。谢谢你的回复。