1

(手動で)Photoshopを使用してPNG-24ファイルを保存すると、次の画像(15.5KB)が得られます。

ここに画像の説明を入力してください

javascriptを使用して保存すると、次の画像(14.1KB)が表示されます。

ここに画像の説明を入力してください

ソース画像は512ピクセルの正方形で、サイズを96ピクセルに変更します(最初のケースでは手動で、2番目のケースではスクリプトで)

問題のスクリプトは次のとおりです。

// options to use on export
var options = new ExportOptionsSaveForWeb();
options.quality = 100;  
options.format = SaveDocumentType.PNG;  
options.PNG8 = false;

// resize
doc.resizeImage(UnitValue(96,'px'), null, null, ResampleMethod.BICUBIC);
// save to file
var newname = doc.fullName + '_96.png';
newname = newname.replace ('.psd', '');
doc.exportDocument(new File(newname), ExportType.SAVEFORWEB, options);

スクリプトを使用して同じ画像を取得するために使用する適切なオプションは誰でも教えてくれますか?

4

1 に答える 1

1

さて、非常に有益な投稿を見つけました。Photoshop アクションを記録し、その js または vb ファイルを確認する方法です。Script Listener というプラグインを使用する必要があります。Adobe Scripting Page
からダウンロードできます。

この投稿の指示に従います(受け入れられた回答ではなく、Kevin Sharnhorst による回答)。

次に、アクションを私が持っているスクリプトと比較するのは簡単です。最悪の場合、リスナーによって作成されたコードを使用して、まったく同じアクションを実行できます。

実際の実行 後に編集 前述の手法を使用した後、原因は SaveForWeb 関数ではなく、画像のサイズ変更でした。同じ結果を得るには doc.resizeImage() に十分なオプションがないようです。
代わりにリスナー (醜い) コードをコピーしたところ、結果は期待どおりになりました

var idImgS = charIDToTypeID( "ImgS" );
    var desc2 = new ActionDescriptor();
    var idWdth = charIDToTypeID( "Wdth" );
    var idPxl = charIDToTypeID( "#Pxl" );
    desc2.putUnitDouble( idWdth, idPxl, 96.000000 );
    var idscaleStyles = stringIDToTypeID( "scaleStyles" );
    desc2.putBoolean( idscaleStyles, true );
    var idCnsP = charIDToTypeID( "CnsP" );
    desc2.putBoolean( idCnsP, true );
    var idIntr = charIDToTypeID( "Intr" );
    var idIntp = charIDToTypeID( "Intp" );
    var idbicubicAutomatic = stringIDToTypeID( "bicubicAutomatic" );
    desc2.putEnumerated( idIntr, idIntp, idbicubicAutomatic );
executeAction( idImgS, desc2, DialogModes.NO );
于 2013-03-10T05:54:30.857 に答える