getimagesize 无法使用 PHP 版本 5.3.29 获取远程 webp 文件的大小
getimagesize unable to get size of remote webp files with PHP version 5.3.29
以下是代码片段-
list($campaign_image_width, $campaign_image_height, $campaign_image_type, $campaign_image_attr)=getimagesize($campaign_image);
其中$campaign_image包含第三方图片url
问题
$campaign_image_width 为空 url -
我不确定是否是 getimagesize() 的限制,因为不支持的格式导致了这种情况,或者是因为图像的可访问性问题。
注-
- 最后附加的 =h256-rw 似乎告诉服务器 return 不同尺寸的图像版本。
- 我发现如果我尝试使用 firefox 浏览器打开文件,它不会显示图像,而是要求下载一个 webp 文件(图像格式 google它似乎)。
Google chrome 打开文件并正常显示图像。
我认为这是因为格式不受支持。尝试 imagetypes
了解支持的内容。
$bits = imagetypes();
查看 this post,它会有所帮助。安装后你就可以做
$image = new Imagick($originalFilepath);
$origImageDimens = $image->getImageGeometry();
$origImgWidth = $origImageDimens['width'];
$origImgHeight = $origImageDimens['height'];
由于您的服务器已经在下载文件,您不妨自己下载(如果问题是它不能为 webp 正确下载)。您可以使用 GD 方法轻松地做到这一点 imagecreatefromwebp
with imagesx
and imagesy
:
<?php
$url = 'https://lh3.googleusercontent.com/VRY0O_3L8VH2wxJSTiKPr72PeM5uhPPFEsHzzYdxenddpTI150M0TYpljnZisQaROR0=h256-rw';
$img = imagecreatefromwebp($url);
$width = imagesx($img);
$height = imagesy($img);
var_dump($width, $height);
注:
imagecreatefromwebp()
首次在 PHP 5.5 中引入,因此请确保您的最低版本为 5.5 并安装了 GD 扩展。
如果可能,您可以在您的服务器上安装 Google 自己的 webp 转换器作为二进制文件:
https://developers.google.com/speed/webp/docs/compiling#building
在这种情况下,您运行正在使用基于 Fedora 的 Amazon linux,因此使用 yum
作为程序包管理器,因此您应该能够 运行 以下命令:
sudo yum install libwebp;
安装后,您可以使用 safe_mode_exec_dir
和以下执行方法之一来确保您的 safemode
支持二进制文件:
一旦您 运行 转换为例如。 JPG,您可以运行通常的PHP工具来获取图像尺寸:
$hnd = imagecreatefromjpeg('convertedImage.jpg');
$width = imagesx($hnd);
$height = imagesy($hnd);
以下是代码片段-
list($campaign_image_width, $campaign_image_height, $campaign_image_type, $campaign_image_attr)=getimagesize($campaign_image);
其中$campaign_image包含第三方图片url
问题
$campaign_image_width 为空 url -
我不确定是否是 getimagesize() 的限制,因为不支持的格式导致了这种情况,或者是因为图像的可访问性问题。
注-
- 最后附加的 =h256-rw 似乎告诉服务器 return 不同尺寸的图像版本。
- 我发现如果我尝试使用 firefox 浏览器打开文件,它不会显示图像,而是要求下载一个 webp 文件(图像格式 google它似乎)。 Google chrome 打开文件并正常显示图像。
我认为这是因为格式不受支持。尝试 imagetypes
了解支持的内容。
$bits = imagetypes();
查看 this post,它会有所帮助。安装后你就可以做
$image = new Imagick($originalFilepath);
$origImageDimens = $image->getImageGeometry();
$origImgWidth = $origImageDimens['width'];
$origImgHeight = $origImageDimens['height'];
由于您的服务器已经在下载文件,您不妨自己下载(如果问题是它不能为 webp 正确下载)。您可以使用 GD 方法轻松地做到这一点 imagecreatefromwebp
with imagesx
and imagesy
:
<?php
$url = 'https://lh3.googleusercontent.com/VRY0O_3L8VH2wxJSTiKPr72PeM5uhPPFEsHzzYdxenddpTI150M0TYpljnZisQaROR0=h256-rw';
$img = imagecreatefromwebp($url);
$width = imagesx($img);
$height = imagesy($img);
var_dump($width, $height);
注:
imagecreatefromwebp()
首次在 PHP 5.5 中引入,因此请确保您的最低版本为 5.5 并安装了 GD 扩展。
如果可能,您可以在您的服务器上安装 Google 自己的 webp 转换器作为二进制文件:
https://developers.google.com/speed/webp/docs/compiling#building
在这种情况下,您运行正在使用基于 Fedora 的 Amazon linux,因此使用 yum
作为程序包管理器,因此您应该能够 运行 以下命令:
sudo yum install libwebp;
安装后,您可以使用 safe_mode_exec_dir
和以下执行方法之一来确保您的 safemode
支持二进制文件:
一旦您 运行 转换为例如。 JPG,您可以运行通常的PHP工具来获取图像尺寸:
$hnd = imagecreatefromjpeg('convertedImage.jpg');
$width = imagesx($hnd);
$height = imagesy($hnd);