我正在尝试获取图像 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 服务器中有该模块
最佳答案
通过以下命令安装Intervention\Image
。
composer require intervention/image
更新 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";
}
关于php - Laravel Storage::get() 不返回图像的 exif 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40685885/