Laravel Storage::get() 不返回图像的 exif 数据

2023-11-20

我正在尝试获取图像 exif 数据,以便我可以使用图像干预定位功能。

唯一的问题是我无法使用 Storage::get() 读取 exif 数据

首先,我像这样存储上传的图像:

$filename = uniqid().'.'.$file->getClientOriginalExtension();
$path = "images/$id/$filename";
Storage::put($path, File::get($file->getRealPath()));

在队列中,我正在读取图像,调整大小并上传到 AWS:

$image = Image::make(Storage::disk('images')->get("$this->id/$file"));
            $image->orientate();
            $image->resize(null, 600, function ($constraint) {
                $constraint->aspectRatio();
            });
            $image->stream('jpg', 85);
Storage::put("images/$this->id/main/$file", $image);
$image->destroy();

图像确实会调整大小并上传到 AWS,但唯一的问题是它会横向显示,所以我似乎无法使用以下命令读取 exif 数据:

Storage::disk('images')->get("$this->id/$file")

我已经运行: php -m |更多,我可以看到列出了“exif”,因此我的 Laravel Forge DO 服务器中有该模块


Install Intervention\Image通过以下命令。

composer require intervention/image

Update config/app.php

'providers' => [
    Intervention\Image\ImageServiceProvider::class
],
'aliases' => [
    'Image' => Intervention\Image\Facades\Image::class
]

使用库:

$data = Image::make(public_path('IMG.jpg'))->exif();

if (isset($data['GPSLatitude'])) {
    $lat = eval('return ' . $data['GPSLatitude'][0] . ';')
        + (eval('return ' . $data['GPSLatitude'][1] . ';') / 60)
        + (eval('return ' . $data['GPSLatitude'][2] . ';') / 3600);

    $lng = eval('return ' . $data['GPSLongitude'][0] . ';')
        + (eval('return ' . $data['GPSLongitude'][1] . ';') / 60)
        + (eval('return ' . $data['GPSLongitude'][2] . ';') / 3600);

    echo "$lat, $lng";
} else {
    echo "No GPS Info";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel Storage::get() 不返回图像的 exif 数据 的相关文章

随机推荐