将Apps脚本Blob从PNG转换为JPEG时出错

时间:2017-11-20 23:16:12

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

我正在尝试在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);
}

不起作用。

1 个答案:

答案 0 :(得分:2)

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

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

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