1

Adobe ExtendScript パネルで使用するために、画像をバイナリ文字列にバッチ変換しようとしています。私が取得したい結果は、次のような文字列です。

\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x0F\x00\x00\x00\x0F\b\x06\x00\x00\x00;\u00D6\u0095J\x00\x00\x00IIDAT(\u0091c`\x18~ --\u00ED?\x0E\u00BC\u009F\x18\u00CD\r8p\x026\u00C5\x06@\u00EC@\x046 \u00C5\u0099\u0084\u009D\r\x14,\u00C0\u00E3T\u00FC\u00CE&\u00C1\x10\u00BC\u009AIw6\u0092f\u00D2\x02\f\u00E4\x14\"\u00FD\u008B\u00E9l\u0090S(\nm\u00BA\x02\x00\u009Dp\u00B2N\u00F1d\x1D\u00FD\x00\x00\x00\x00IEND\u00AEB`\u0082

しかし、私のコードはこれを生成します:

c289 504e 470d 1a0d 0000 000d 4948 4452
0000 000f 0000 000f 0806 0000 003b c396
c295 4a00 0000 4949 4441 5428 c291 6360
187e 202d 2dc3 ad3f 0ec2 bcc2 9f18 c38d
0d38 7002 36c3 8506 40c3 ac40 0436 20c3
85c2 99c2 84c2 9d0d 142c c380 c3a3 54c3
bcc3 8e26 c381 10c2 bcc2 9a49 7736 c292
66c3 9202 0cc3 a414 22c3 bdc2 8bc3 a96c
c290 5328 0d6d c2ba 0200 c29d 70c2 b24e
c3b1 641d c3bd 0000 0000 4945 4e44 c2ae
4260 c282

最初の文字列のようなものを得るにはどうすればよいですか? これは私のコードです (adobe extendscript)。誰かが別の言語で解決策を持っているなら、私もそれを取るでしょう.

var allImages = loadFiles("*.png");// load files is my own function

if(allImages == null) return;
var folder = allImages[0].parent;
for(var i = 0; i < allImages.length;i++){
        var curfile = File (allImages[i]);

        curfile.open ('r');
        curfile.encoding = 'BINARY';
        var str = curfile.read();
        curfile.close();

        var newfile = new File (folder.fsName + '/' + curfile.name + '.txt');
        newfile.open('w');
        newfile.encoding = 'UTF-8';
        newfile.write(str);
        newfile.close();
    } // end loop i 
4

2 に答える 2

1

おそらく、画像をBase64に変換する必要があります。

そのオプションに関するstackoverflowの2つのスレッドを次に示します。どちらの場合も、2 番目の回答の方が興味深いと思います。

Javascript を使用して Base64 にエンコードするにはどうすればよいですか?

JSON エンコード/デコード JavaScript での base64 エンコード/デコード

于 2013-03-06T13:00:03.853 に答える
0

ファイルの内容を Source() に書き込むだけです。

var allImages = loadFiles("*.png");// load files is my own function

if(allImages == null) return;
var folder = allImages[0].parent;
for(var i = 0; i < allImages.length;i++){
    var curfile = File (allImages[i]);

    curfile.open ('r');
    curfile.encoding = 'BINARY';
    var str = curfile.read();
    curfile.close();

    var newfile = new File (folder.fsName + '/' + curfile.name + '.txt');
    newfile.open('w');
    newfile.encoding = 'UTF-8';
    newfile.write(str.Source()); // <-- Thats the trick
    newfile.close();
} // end loop i  

これにより、この内容のファイルが作成されます。

(new String("\u0089PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x1E\x00\x00\x00\x19\b\x06\x00\x00\x00&5\u009E\x1A\x00\x00\x00\u008DIDATx\u00DA\u00ED\u00D2\u00BB\r\u00C0 \fE\u00D1\f\u00C9\x00\u00B4H\u00F44\x14)\u00A0\u00A0\u00A1c\x00f`@Go\x01>r$+\u0091\u008B\u00DB\u00D9\x1C\u00C5\u00CA\u00E5\u009C\u00BB%\x02L\x12)\u00AC\u00B0<\\J\u00A11\u00C6,\u00CC\u0088\u00C1?8u\u00CE\u0099j\u00AD'a\u0087\x0F\u00F7\u00DEq\u00C6\u0093\u00B0\u00C3\u0087C\b\x14c<\t;k\u00D8\x18C;Yk\u00C9{?\r3\u009B\u00EF\u00ED\u00C3)\u00A5\u00D5\u00891\u00F3:\u008C/\u00C2\u00C3\u00B30\u00C3\u0084\u00F9\u00F1\u00E1\u00D6\u00DA\u00E9_\u008D\u009D\u00AF\u00C1\u00FC\x14VX\x0E~\x00i\u0096r%\u00B0\u00FF\x1E\x14\x00\x00\x00\x00IEND\u00AEB`\u0082"))
于 2013-03-06T13:18:59.650 に答える