我有一些图像存储在 AWS S3 中,我正在使用 Laravel 中的 Storage 外观将它们显示在网页上。
在少数情况下,我想获取一些图像的尺寸并将这些尺寸存储在数据库中。
我正在考虑getimagesize
在 PHP 中使用该函数,但图像不公开,只能通过 Storage 门面访问。
我怎样才能得到这些图像的尺寸?谢谢你。
编辑:我应该提到,这个图像处理都是为了数据库迁移而完成的,所以使用像 JS 这样的 Web 前端解决方案来获取图像尺寸是不切实际的。
我有一些图像存储在 AWS S3 中,我正在使用 Laravel 中的 Storage 外观将它们显示在网页上。
在少数情况下,我想获取一些图像的尺寸并将这些尺寸存储在数据库中。
我正在考虑getimagesize
在 PHP 中使用该函数,但图像不公开,只能通过 Storage 门面访问。
我怎样才能得到这些图像的尺寸?谢谢你。
编辑:我应该提到,这个图像处理都是为了数据库迁移而完成的,所以使用像 JS 这样的 Web 前端解决方案来获取图像尺寸是不切实际的。
我想出了一个似乎可行的解决方案。基本上,我使用 Storage 门面获取文件的二进制文件,然后使用imagecreatefromstring
、imagesx
和imagesy
函数获取图像的宽度和高度。
这是一个例子:
$contents = Storage::get($storageFilePath);
$im = imagecreatefromstring($contents);
$width = imagesx($im) ?? null;
$height = imagesy($im) ?? null;
您还可以使用开源库Intervention\Image,它使用 GD 库和 Imagick:
$image = \Image::make(Storage::get($storageFilePath));
$width = $image->width();
$height = $image->height();