Google表格应用脚本>查找图像比率

时间:2018-08-07 22:50:59

标签: google-apps-script google-sheets

我使用的是Google表格脚本语言,并且我想从网络链接中获取图片的比例,例如this flag

我已经看到一种做it here的方法,但是我想从函数中返回比率,而不是将其放在随机单元格中。

到目前为止,我已经设法做到了,这似乎行不通。

@objc func buttonAction(sender: UIButton!) {
    let newController = storyboard?.instantiateViewController(withIdentifier: "VcId") as! JobTableViewController
    self.navigationController?.present(newController, animated: true, completion: nil)
}

1 个答案:

答案 0 :(得分:2)

该解决方法如何?我认为您的情况有几个答案。因此,请将此视为其中之一。该脚本的流程如下。

  1. 将图像下载为文件。
  2. 使用Drive API从下载的文件中检索imageMediaMetadata。
  3. 删除下载的文件。
  4. 从imageMediaMetadata检索纵横比。

要使用此示例脚本,请按以下步骤在高级Google服务和API控制台中启用Drive API。

在高级Google服务中启用Drive API v2

  • 在脚本编辑器上
    • 资源->高级Google服务
    • 打开Drive API v2

Enable Drive API at API console

  • 在脚本编辑器上
    • 资源-> Cloud Platform项目
    • View API控制台
    • 在“入门”中,单击“探索并启用API”。
    • 在左侧,单击库。
    • 在“搜索API和服务”中,输入“驱动器”。然后点击Drive API。
    • 单击“启用”按钮。
    • 如果已启用API,请不要关闭。

示例脚本

function myFunction(url) {
  var blob = UrlFetchApp.fetch(url).getBlob();
  var fileId = DriveApp.createFile(blob).getId();
  var imageMediaMetadata = Drive.Files.get(fileId).imageMediaMetadata;
  var aspectRatio = imageMediaMetadata.width / imageMediaMetadata.height;
  Drive.Files.remove(fileId);
  return aspectRatio;
}

注意:

  • 将您问题中的https://www.theodora.com/flags/e_timor.gif用于此脚本时,将检索1.5

参考文献:

如果这不是您想要的,对不起。

已添加:

如果您不想在Google云端硬盘中创建文件,则可以使用this library来获取宽高比。该库可以从Blob检索图像大小,因为已解析图像的二进制数据。当您将此库用于您的情况时,脚本将如下所示。

function myFunction(url) {
  var blob = UrlFetchApp.fetch(url).getBlob();
  var res = ImgApp.getSize(blob);
  var aspectRatio = res.width / res.height;
  return aspectRatio;
}