Image 将应用程序脚本Blob从PNG转换为JPEG时出错
我正在尝试下载应用程序脚本中的PNG图像,将其转换为JPEG,并为这个新的JPEG生成一个数据URIImage 将应用程序脚本Blob从PNG转换为JPEG时出错,image,image-processing,google-apps-script,blob,Image,Image Processing,Google Apps Script,Blob,我正在尝试下载应用程序脚本中的PNG图像,将其转换为JPEG,并为这个新的JPEG生成一个数据URI 功能测试(){ var blob=UrlFetchApp.fetch('https://what-if.xkcd.com/imgs/a/156/setup.png').getBlob(); var jpeg=blob.getAs(“图像/jpeg”); var uri='data:image/jpeg;base64'+Utilities.base64Encode(jpeg.getBytes())
功能测试(){
var blob=UrlFetchApp.fetch('https://what-if.xkcd.com/imgs/a/156/setup.png').getBlob();
var jpeg=blob.getAs(“图像/jpeg”);
var uri='data:image/jpeg;base64'+Utilities.base64Encode(jpeg.getBytes());
Logger.log(uri);
}
当我运行这个时,我得到:您试图使用的图像无效或已损坏。
甚至像:
功能测试(){
var bytes=UrlFetchApp.fetch('https://what-if.xkcd.com/imgs/a/156/setup.png').getBlob().getBytes();
var jpeg=Utilities.newBlob(字节,MimeType.PNG).getAs(MimeType.jpeg);
DriveApp.createFile(jpeg);
}
不起作用。您的代码是正确的。这可能是一个bug,但它是特定于您正在使用的文件的,因此也可能是文件中的bug(即,文件确实可能以某种方式损坏)。或者它使用了一些谷歌无法处理的PNG格式的特性。将URL替换为另一个URL,例如
var blob = UrlFetchApp.fetch('https://cdn.sstatic.net/Sites/mathematica/img/logo@2.png').getBlob();
这两个函数都按预期工作。您的代码是正确的。这可能是一个bug,但它是特定于您正在使用的文件的,因此也可能是文件中的bug(即,文件确实可能以某种方式损坏)。或者它使用了一些谷歌无法处理的PNG格式的特性。将URL替换为另一个URL,例如
var blob = UrlFetchApp.fetch('https://cdn.sstatic.net/Sites/mathematica/img/logo@2.png').getBlob();
这两个功能都能正常工作。我很确定这是谷歌方面的一个缺陷,所以我提出了一个问题:请启动!★我很确定这是谷歌方面的一个错误,所以我提出了一个问题:请明星!★我不知道这是否是有用的信息。在我的环境中,当我使用包含alpha通道的PNG文件时,会发生这种错误。如果PNG文件没有alpha通道,则不会发生错误。有趣。有没有办法在应用程序脚本blob中去掉PNG的透明度?我不知道这是否是有用的信息。在我的环境中,当我使用包含alpha通道的PNG文件时,会发生这种错误。如果PNG文件没有alpha通道,则不会发生错误。有趣。有没有一种方法可以去除应用程序脚本blob中PNG的透明度?