将 Google 张照片中的 HEIC 文件下载为 JPG

Download HEIC file in Google Photos as JPG

我正在使用此代码上传 heic 文件,并找到一种通过应用程序脚本将 heic 转换为 jpg 或 png 的方法(不是右键单击另存为)

我有我的代码

function uploadMediaItems() {
  const albumId = "AKwCquOrmWbEihvwEqIM7Jy_H8wrkM_dof1eIGwXq8YZV-uuj9jWvkMT5oWkG6P0a-w_w9VyTOxM";  // Please set the album ID.
  var arrId =
  [
   "1ssNYJFSEdfRI55IUi_tte3iC_JcPLG-0"
  ];

  const items = arrId.map(id => {
    const file = DriveApp.getFileById(id);
    return {blob: file.getBlob(), filename: file.getName()};
  });
  const res = GPhotoApp.uploadMediaItems({albumId: albumId, items: items});
  console.log(JSON.stringify(res))
}

来源:

我相信你的目标如下。

  • 您想将 HEIC 文件上传到 Google Photos 并使用位于 .
  • 的示例脚本将其导出为 Jpeg 或 PNG 文件
  • 从您的脚本中,HEIC 文件被放置在您的 Google 驱动器上。

我认为在您的目标中,您可能想要将 HEIC 文件转换为 Jpeg 或 PNG 文件。在这种情况下,以下示例脚本如何?

示例脚本 1:

在此示例脚本中,使用了 处的示例脚本。因此,在本例中,使用了 GPhotoApp 的 Google Apps Script 库。 Ref示例脚本如下

在此脚本中,假设您的 Google Apps Script 项目已与 Cloud Platform Project 关联,并且已启用 Photos API,并且,已添加所需的范围。请注意这一点。

function myFunction() {
  const arrId = ["###"]; // Please set the file ID of your HEIC file.
  const albumId = "###"; // Please set your albumn ID.

  const items = arrId.map(id => {
    const file = DriveApp.getFileById(id);
    return { blob: file.getBlob(), filename: file.getName() };
  });
  const res1 = GPhotoApp.uploadMediaItems({ albumId: albumId, items: items });
  const mediaItemId = res1.newMediaItemResults[0].mediaItem.id;
  const res2 = GPhotoApp.getMediaItems({ mediaItemIds: [mediaItemId] });
  const mediaItem = res2.mediaItemResults[0].mediaItem;
  const blob = UrlFetchApp.fetch(mediaItem.baseUrl).getBlob();
  DriveApp.createFile(blob.setName(mediaItem.filename.replace(".heic", ".png")));
}
  • 当此脚本为 运行 时,PNG 文件创建到根文件夹。

示例脚本 2:

HEIC 文件放在您的 Google 驱动器上。并且,您想将 HEIC 文件转换为 Jpeg 或 PNG。在这种情况下,我认为这可以使用以下简单脚本来实现。在这种情况下,不需要使用照片 API。

当您使用此脚本时,please enable Drive API at Advanced Google services.

function myFunction2() {
  const fileId = "###"; // Please set the file ID of your HEIC file.

  const obj = Drive.Files.get(fileId);
  const blob = UrlFetchApp.fetch(obj.thumbnailLink.replace(/=s.+/, "=s2000")).getBlob();
  DriveApp.createFile(blob.setName(obj.title.replace(".heic", ".png")));
}
  • 当此脚本为 运行 时,PNG 文件创建到根文件夹。

参考文献: