Google Apps 脚本:如何从 blob 获取图像?

Google Apps Script : how to get image from blob?

我在远程服务器上获取图像:

  var response = UrlFetchApp.fetch(fileURL);
  var fileBlob = response.getBlob();

如何从 blob 中获取图像?我想使用此图像来获取其大小(使用 getHeight() 和 getWidth())并对它执行其他不同的操作。

谢谢

  • 您想使用 Google Apps 脚本直接从图像数据块中检索宽度和高度。

如果我的理解是正确的,这个答案怎么样?

模式 1:

在此模式中,使用 Google Apps 脚本从图像数据块中检索宽度和高度。

不幸的是,在当前阶段,没有直接从图像数据块中检索宽度和高度的方法。所以我创建了通过分析二进制级别 a GAS library. This is also mentioned by 来检索的脚本。使用此库,您可以使用 Google Apps 脚本直接从图像数据块中检索宽度和高度。

示例脚本:

关于库的安装,请查看here

var response = UrlFetchApp.fetch(fileURL);
var fileBlob = response.getBlob();
var res = ImgApp.getSize(fileBlob);
Logger.log(res)
结果:
{
  identification : ### BMP, GIF, PNG and JPG ###,
  width          : ### pixel ###,
  height         : ### pixel ###,
  filesize       : ### bytes ###
}
  • 在此库中,可以从 BMP、GIF、PNG 和 JPG 中检索宽度和高度。

模式二:

在此模式中,使用 Google 文档检索宽度和高度。在这种情况下,please enable Drive API at Advanced Google services.

示例脚本:

function getSize_doc(blob) {
  var docfile = Drive.Files.insert({
    title: "temp",
    mimeType: "application/vnd.google-apps.document",
  }).getId();
  var img = DocumentApp.openById(docfile).insertImage(0, blob);
  Drive.Files.remove(docfile);
  return {width: img.getWidth(), height: img.getHeight()};
}

function main() {
  var response = UrlFetchApp.fetch(fileURL);
  var fileBlob = response.getBlob();
  var res = getSize_doc(fileBlob);
  Logger.log(res)
}
  • 在此脚本中,首先,Google 文档被创建为临时文件,并从 blob 中插入的图像中检索宽度和高度。然后,临时文件被删除。

模式 3:

在此模式中,通过将 blob 创建为文件来检索宽度和高度。在这种情况下,please enable Drive API at Advanced Google services.

示例脚本:

var response = UrlFetchApp.fetch(fileURL);
var fileBlob = response.getBlob();
var res = Drive.Files.insert({title: "temp"}, fileBlob);
Drive.Files.remove(res.id);
Logger.log(res.imageMediaMetadata.width)
Logger.log(res.imageMediaMetadata.height)
  • 在此脚本中,首先从 blob 创建一个文件作为临时文件,并从创建的文件中检索宽度和高度。然后,临时文件被删除。

参考文献:

如果这个答案不是您想要的方向,我深表歉意。