【问题标题】:Error Converting Apps Script Blob from PNG to JPEG将 Apps 脚本 Blob 从 PNG 转换为 JPEG 时出错
【发布时间】:2018-05-04 07:16:48
【问题描述】:

我正在尝试在 Apps 脚本中下载一个 PNG 图像,将其转换为 JPEG,然后为这个新的 JPEG 生成一个数据 URI。

function test() {
  var blob = UrlFetchApp.fetch('https://what-if.xkcd.com/imgs/a/156/setup.png').getBlob();
  var jpeg = blob.getAs("image/jpeg");
  var uri = 'data:image/jpeg;base64,' + Utilities.base64Encode(jpeg.getBytes());
  Logger.log(uri);
}

当我运行它时,我得到:
The image you are trying to use is invalid or corrupt.

甚至是这样的:

function test() {
  var bytes = UrlFetchApp.fetch('https://what-if.xkcd.com/imgs/a/156/setup.png').getBlob().getBytes();
  var jpeg = Utilities.newBlob(bytes, MimeType.PNG).getAs(MimeType.JPEG);
  DriveApp.createFile(jpeg);
}

没用。

【问题讨论】:

标签: image image-processing google-apps-script blob


【解决方案1】:

您的代码是正确的。这可能是一个错误,但它特定于您正在使用的文件,因此也可能是文件中的错误(即,文件确实可能以某种方式损坏)。或者它可能使用了 Google 无法处理的 PNG 格式的某些功能。将 URL 替换为另一个 URL,例如,

var blob = UrlFetchApp.fetch('https://cdn.sstatic.net/Sites/mathematica/img/logo@2.png').getBlob();

这两个功能都按预期工作。

【讨论】:

  • 我不知道这是不是有用的信息。在我的环境中,当我使用包含 alpha 通道的 PNG 文件时,会发生此类错误。当 PNG 文件没有 alpha 通道时,不会发生错误。
  • 有趣。有没有办法从 Apps 脚本 blob 中的 PNG 中去除透明度?
猜你喜欢
  • 2018-07-17
  • 2011-01-18
  • 2011-09-09
  • 2012-12-22
  • 2022-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
相关资源
最近更新 更多