2017-11-20 12 views
0

Apps ScriptでPNG画像をダウンロードしてJPEGに変換し、この新しいJPEGのデータURIを生成しようとしています。私はこれを実行するとError Apps Script BlobをPNGからJPEGに変換する

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); 
} 

は動作しません。

+0

私はこれがGoogle側のバグだと確信していますので、問題を提出しました: https://issuetracker.google.com/issues/69566797 スターを付けてください! ★ – xd1936

答えて

2

コードは正しいです。これはバグかもしれませんが、使用しているファイルに固有のものなので、ファイルにバグがある可能性があります(ファイルが何らかの形で壊れている可能性があります)。あるいは、Googleが処理しないPNG形式の機能を使用しているかもしれません。 URLを別のURLに置き換える(例:

var blob = UrlFetchApp.fetch('https://cdn.sstatic.net/Sites/mathematica/img/[email protected]').getBlob(); 

両方の機能が期待通りに機能します。

+1

これは有用な情報かどうかわかりません。私の環境では、アルファチャンネルを含むPNGファイルを使用すると、このようなエラーが発生します。アルファチャンネルのないPNGファイルの場合、エラーは発生しません。 – Tanaike

+0

興味深い。 Apps Script BLOBのPNGから透明度を取り除く方法はありますか? – xd1936

関連する問題