getimagesize无法使用PHP版本5.3.29获取远程webp文件的大小

getimagesize无法使用PHP版本5.3.29获取远程webp文件的大小,php,image-size,Php,Image Size,下面是代码片段- list($campaign_image_width, $campaign_image_height, $campaign_image_type, $campaign_image_attr)=getimagesize($campaign_image); 其中$campaign_image包含第三方图像的url 问题 $campaign\u image\u width对于此url为空- 我不确定这是否是getimagesize()的限制,是因为不支持的格式造成的,还是因为图像

下面是代码片段-

list($campaign_image_width, $campaign_image_height, $campaign_image_type, $campaign_image_attr)=getimagesize($campaign_image);
其中$campaign_image包含第三方图像的url

问题

$campaign\u image\u width对于此url为空-

我不确定这是否是getimagesize()的限制,是因为不支持的格式造成的,还是因为图像的可访问性问题

注-

-最后出现的=h256 rw似乎告诉服务器返回不同大小的映像版本

-我发现,如果我尝试使用firefox浏览器打开文件,它不会显示图像,而是要求下载一个webp文件(这似乎是google的图像格式)。
Google chrome通常会打开文件并显示图像。

我认为这是因为格式不受支持。尝试了解支持什么

$bits = imagetypes();
看看吧,这会有帮助的。安装后,您将能够执行以下操作

$image = new Imagick($originalFilepath);
$origImageDimens = $image->getImageGeometry(); 
$origImgWidth = $origImageDimens['width']; 
$origImgHeight = $origImageDimens['height'];   

我认为这是因为不支持的格式。尝试了解支持什么

$bits = imagetypes();
看看吧,这会有帮助的。安装后,您将能够执行以下操作

$image = new Imagick($originalFilepath);
$origImageDimens = $image->getImageGeometry(); 
$origImgWidth = $origImageDimens['width']; 
$origImgHeight = $origImageDimens['height'];   

由于您的服务器已经下载了该文件,您不妨自己下载(如果问题是它不能正确地为webp下载)。您可以使用GD方法轻松完成此操作,方法包括和:

安装后,您可以通过使用和以下执行方法之一确保您的
safemode
支持二进制文件:

运行到例如JPG的转换后,可以运行常用的PHP工具来获取图像尺寸:

$hnd = imagecreatefromjpeg('convertedImage.jpg');

$width = imagesx($hnd);
$height = imagesy($hnd);

由于您的服务器已经下载了该文件,您不妨自己下载(如果问题是它不能正确地为webp下载)。您可以使用GD方法轻松完成此操作,方法包括和:

安装后,您可以通过使用和以下执行方法之一确保您的
safemode
支持二进制文件:

运行到例如JPG的转换后,可以运行常用的PHP工具来获取图像尺寸:

$hnd = imagecreatefromjpeg('convertedImage.jpg');

$width = imagesx($hnd);
$height = imagesy($hnd);


下载的文件有任何有效的图像扩展名?请在此处发表评论,以获得PHP.Btw中修复的getimagesize中缺少的WEBP支持,请从url中删除-rw,谷歌将返回一个jpg/png/whatever标准图像而不是webp。下载的文件有任何有效的图像扩展名吗?请在此处发表评论以获得PHP中修复的getimagesize中缺少的webp支持。顺便说一句,从url中删除-rw,谷歌将返回一个jpg/png/whatever标准图像而不是webp。这是检查-if(imagetypes()的方法吗&IMG_PNG)echo“PNG支持已启用”;是的。但正如您所看到的,在当前文档中没有类似的
IMG\u WEBP
常量。所以我认为它还没有得到设计的支持。我也注意到了这一点。那么,这是否意味着不会有PHP方法以本机方式查找维度?使用一些库(如GD库)会提供一些选项吗?有什么想法吗?添加了一个有用的链接来回答,请查看。我已经在服务器上安装了imagick(但不是PHP Imagemagick)。我检查了一下,即使是命令行转换也不支持webp格式。由于Imagemagick PHP类只不过是imagick实用程序的包装器,我怀疑当imagick本身不适用于这种格式时,这也不会起作用。如果我运行这个命令-
convert-resize50x50
,我收到这个错误
convert:no decode delegate for this image format
WEBP'@error/composure.c/ReadImage/535.`这是检查的方法吗-如果(imagetypes()&IMG_PNG)echo“PNG支持已启用”;是的。但正如您所看到的,在当前文档中没有类似的
IMG\u WEBP
常量。所以我认为它还没有得到设计的支持。我也注意到了这一点。那么,这是否意味着不会有PHP方法以本机方式查找维度?使用一些库(如GD库)会提供一些选项吗?有什么想法吗?添加了一个有用的链接来回答,请查看。我已经在服务器上安装了imagick(但不是PHP Imagemagick)。我检查了一下,即使是命令行转换也不支持webp格式。由于Imagemagick PHP类只不过是imagick实用程序的包装器,我怀疑当imagick本身不适用于这种格式时,这也不会起作用。如果我运行这个命令-
convert-resize50x50,我收到了这个错误
convert:no decode delegate for this image format
WEBP'@error/composure.c/ReadImage/535.`@sandepannath那么我恐怕你运气不好,因为它是第一次添加的。如果您有权访问CLI工具,您很可能需要这些其他软件包,但您不能像Google那样使用aptitude,因为Amazon linux基于Feroda并用作软件包管理器。也就是说,似乎有一个预先制作的Feroda软件包包含了您想要的内容。您应该能够通过使用命令
yum install libwebp
安装此程序。根据当时的
libwebp-0.3.0
应该是可用的。@sandepannath如果你问是否有人做了一个调用DirectAPI的
webp
php扩展,那么我不知道-谷歌可以告诉你。如果您询问如何围绕二进制文件构建包装器,这取决于您希望实现的高级程度。我建议您首先使用
shell_exec
,但请确保使用
escapeshellarg
转义所有参数,因为您不希望有人在您的服务器上运行命令。@sandePanath不完全正确。如果使用二进制文件并将其放置在该路径中,则可以启用安全模式。请记住,您不能在启用安全模式的情况下使用
shell\u exec
,但可以使用
exec
passthru
system
popen
(以您喜欢的为准)。包装器没有任何区别,只是一种用途