如何在Google App Engine PHP中阅读EXIF

时间:2017-12-26 14:48:14

标签: php google-app-engine exif

PHP应用程序将在Google App Engine上运行。它应该能够从用户上传的照片中读取EXIF信息,尤其是相机品牌和型号,f值,焦距,GPS坐标等。

从临时文件中读取

当脚本尝试直接从上传的文件中读取EXIF时,如下所示:

done

结果如下:

本地PHP服务器(PHP 7.1.9) - 确定

Google Cloud SDK (182.0.0,PHP 5.5.26)

$exif = exif_read_data($_FILES['file']['tmp_name']);

Google App Engine (PHP 5.5.38)

Warning: exif_read_data(0): Error reading from file: got=x3FFA(=16378) != itemlen-2=xF2A8(=62120) in D:\project\upload.php on line 5

Warning: exif_read_data(0): Invalid JPEG file in D:\project\upload.php on line 5

我怀疑这与Google将上传文件存储在虚拟文件系统中的方式有​​关(tmp_name为PHP Warning: exif_read_data(0): Error reading from file: got=x3FFA(=16378) != itemlen-2=xF2A8(=62120) in /base/data/home/apps/e~project/20171226t213042.406490485858874687/upload.php on line 5 PHP Warning: exif_read_data(0): Invalid JPEG file in /base/data/home/apps/e~project/20171226t213042.406490485858874687/upload.php on line 5 )。

从Google存储空间存储桶中读取文件

当我将上传的照片移动到GS存储桶然后尝试从那里读取EXIF时:

vfs://root/uploads/0

结果如下:

Google Cloud SDK

use google\appengine\api\cloud_storage\CloudStorageTools;
$bucket = CloudStorageTools::getDefaultGoogleStorageBucketName();
$name = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$file_path = 'gs://' . $bucket . '/' . $name;

move_uploaded_file($tmp_name, $file_path);
$serving_url = CloudStorageTools::getImageServingUrl($file_path);

$exif_raw = exif_read_data($serving_url);

Google App Engine - 可以读取EXIF,但似乎只有FILE和COMPUTED部分可用;缺少包含相机相关信息的IFD0或EXIF部分的信息。

该应用如何在本地开发服务器和Google App Engine上读取EXIF(包括IFD0部分)?

0 个答案:

没有答案