0

我有一些图像存储在 AWS S3 中,我正在使用 Laravel 中的 Storage 外观将它们显示在网页上。

在少数情况下,我想获取一些图像的尺寸并将这些尺寸存储在数据库中。

我正在考虑getimagesize在 PHP 中使用该函数,但图像不公开,只能通过 Storage 门面访问。

我怎样才能得到这些图像的尺寸?谢谢你。

编辑:我应该提到,这个图像处理都是为了数据库迁移而完成的,所以使用像 JS 这样的 Web 前端解决方案来获取图像尺寸是不切实际的。

4

2 回答 2

1

我想出了一个似乎可行的解决方案。基本上,我使用 Storage 门面获取文件的二进制文件,然后使用imagecreatefromstringimagesximagesy函数获取图像的宽度和高度。

这是一个例子:

$contents = Storage::get($storageFilePath);
$im = imagecreatefromstring($contents);
$width = imagesx($im) ?? null;
$height = imagesy($im) ?? null;
于 2019-06-19T14:23:37.223 回答
1

您还可以使用开源库Intervention\Image,它使用 GD 库和 Imagick:

$image = \Image::make(Storage::get($storageFilePath));
$width = $image->width();
$height = $image->height();
于 2021-01-08T13:21:19.313 回答