如何从Drive中的jpeg文件中提取EXIF数据 [英] How to extract EXIF data from jpeg files in Drive

查看:82
本文介绍了如何从Drive中的jpeg文件中提取EXIF数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用Google脚本从位于我的Google云端硬盘文件夹中的几个jpeg文件中提取EXIF数据。

更准确地说,我想提取拍摄照片的日期以及之前使用Adobe Lightroom创建的相关关键字/图像描述。



我知道几个允许提取EXIF的脚本来自文件的数据存在于互联网上,但我没有设法链接它们,或者将它们与我自己的Google脚本一起使用。



我该如何轻松做到这一点?
(我是Google Script初学者,请尽可能精确)

预先感谢您

解决方案

Google Apps脚本的DriveApp服务无法访问您要查找的详细信息,但Advance Drive Service确实可以。



Code.gs



您需要启用高级云端硬盘服务以下说明




$ b

  //演示如何使用getPhotoExif()
//记录名为Photos的文件夹中的所有文件。
函数listPhotos(){
var files = DriveApp.getFoldersByName(Photos)。next()。getFiles();
var fileInfo = [];
while(files.hasNext()){
var file = files.next();
Logger.log(File:%s,拍摄日期:%s,
file.getName(),
getPhotoExif(file.getId())。date ||'unknown' );
}
}

/ **
*为给定文件检索imageMediaMetadata。有关详细信息,请参阅文件资源
*表示。
*(https://developers.google.com/drive/v2/reference/files)
*
* @param {字符串} fileId查找文件ID
*
* @returns {object} imageMediaMetadata对象
* /
函数getPhotoExif(fileId){
var file = Drive.Files.get(fileId);
var metaData = file.imageMediaMetadata;

//如果metaData是'undefined',返回一个空对象
返回metaData? metaData:{};
}

在Google Drive API中,资源表示形式包含EXIF数据的属性:

 imageMediaMetadata:{
width:integer,
height:integer,
rotation:整数,
位置:{
latitude:double,
longitude:double,
altitude:double
},
date:string,
cameraMake:string,
cameraModel:string,
exposureTime:float,
aperture:float,
flashUsed:boolean,
focalLength:float,
isoSpeed:整数,
meteringMode:字符串,
sensor:字符串,
exposureMode:字符串,
colorSpace:字符串,
whiteBalance:字符串,
exposureBias:float,
maxApertureValue:float,
subjectDistance:integer,
lens:string
},


I am trying to extract EXIF data from several jpeg files located in one of my Google Drive folders, using a Google Script.

More accurately, I would like to extract the date at which the photo was taken, together with associated keywords / description of the image, previously created with Adobe Lightroom.

I know that several scripts allowing to extract EXIF data from a file exist on internet, but I didn't manage to link them, or to use them with my own Google script.

How can I do that easily ? (I am a beginner on Google Script, please be as precise as possible)

Thank you in advance

解决方案

The DriveApp service of Google Apps Script doesn't provide access to the details you're looking for, but the Advance Drive Service does.

Code.gs

You will need to enable the Advanced Drive service, following instructions here.

// Demo use of getPhotoExif()
// Logs all files in a folder named "Photos".
function listPhotos() {
  var files = DriveApp.getFoldersByName("Photos").next().getFiles();
  var fileInfo = [];
  while (files.hasNext()) {
    var file = files.next();
    Logger.log("File: %s, Date taken: %s",
               file.getName(),
               getPhotoExif(file.getId()).date || 'unknown');
  }
}

/**
 * Retrieve imageMediaMetadata for given file. See Files resource
 * representation for details.
 * (https://developers.google.com/drive/v2/reference/files)
 *
 * @param {String} fileId    File ID to look up
 *
 * @returns {object}         imageMediaMetadata object
 */
function getPhotoExif( fileId ) {
  var file = Drive.Files.get(fileId);
  var metaData = file.imageMediaMetadata;

  // If metaData is 'undefined', return an empty object
  return metaData ? metaData : {};
}

In the Google Drive API, the resource representation for a File includes properties for the EXIF data:

  "imageMediaMetadata": {
    "width": integer,
    "height": integer,
    "rotation": integer,
    "location": {
      "latitude": double,
      "longitude": double,
      "altitude": double
    },
    "date": string,
    "cameraMake": string,
    "cameraModel": string,
    "exposureTime": float,
    "aperture": float,
    "flashUsed": boolean,
    "focalLength": float,
    "isoSpeed": integer,
    "meteringMode": string,
    "sensor": string,
    "exposureMode": string,
    "colorSpace": string,
    "whiteBalance": string,
    "exposureBias": float,
    "maxApertureValue": float,
    "subjectDistance": integer,
    "lens": string
  },

这篇关于如何从Drive中的jpeg文件中提取EXIF数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆