終了

Javaスクリプト_PNG書出し_解像度 高解像度(300ppi)で出力できない

New Here ,
Sep 12, 2024 Sep 12, 2024

リンクをクリップボードにコピー

コピー完了

Illustrator Ver 28.7.1を使用し、Javaスクリプトで自動化する際、書出しオプションを使用し、PNGの高解像度300ppiに設定したく、exportOptions.resolution = 300を使用していますが、デフォルトから変わりません。

改善策について、ご教示お願いいたします。

【書出しオプション】
var exportOptions = new ExportOptionsPNG24();
exportOptions.antiAliasing = true;
exportOptions.transparency = false; // 背景色を透明にしない設定
exportOptions.artBoardClipping = false;
exportOptions.resolution = 300;・・・問題箇所
exportOptions.saveAsHTML = false;
exportOptions.horizontalScale = 100; // 最大解像度の設定
exportOptions.verticalScale = 100; // 最大解像度の設定

キーワード
Win , スクリプティング , ツール , バグ , 機能改善リクエスト , 読み込みと書き出し

表示

186

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

エクスプローラー , Sep 12, 2024 Sep 12, 2024

イラストレーター2018以降であればスクリーン用書き出し相当のexportForScreensが使えます。

scaleTypeにSCALEBYRESOLUTIONを設定して、scaleTypeValueで解像度を設定できます。
以下、開いているドキュメントをデスクトップに作成したフォルダにPNGで書き出すサンプルです。

 

uname = $.getenv('USER');
//書き出しフォルダ名
soutfname = "PNG"

var hiduke=new Date();
var year = hiduke.getFullYear();
var month = ("000" + (hiduke.getMonth()+1)).substr(-2);
var day = ("000" + hiduke.getDate()).substr(-2);
sfolderpass = "/Users/" + uname + "/Desktop/"+ year + month + day + "_" + soutfname;
outfolder = new Folder(sfolderpass);
o
...

投票

翻訳

翻訳
Community Expert ,
Sep 12, 2024 Sep 12, 2024

リンクをクリップボードにコピー

コピー完了

たぶん確認手段が(略)

書き出した画像をPhotoshopで開いて、

「画像解像度」で解像度を確認、

72になっていたら「再サンプルのチェックを外して300を入力したとき、幅&高さが書き出し元のアートボードと一致しているか

 

などはお済みでしょうか?

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Sep 12, 2024 Sep 12, 2024

リンクをクリップボードにコピー

コピー完了

PNGとjpegで試してみましたが、

exportOptions.resolution = 300;

と設定しても等倍・72dpiで書き出されますね。

(もちろん手動のメニュー操作では300dpiで書き出されます。)

リファレンス詳細まで調べていませんが、

extendScriptにおいて exportOptions.resolution での解像度設定は Tiff や PSD に限られるのかも。

(確定情報ではないので違っていたらごめんなさい)

 

もし、現状、等倍・72dpi で書き出されているなら、

exportOptions.horizontalScale と exportOptions.verticalScale を

擬似的に約4.17倍(300/72)にしてみるなど検討してみては。

(私が個人的使うなら、それで充分なのですが、、、)

 

もしかしたら、PNGとjpeg でも 解像度を操作できるプロパティがあるかもしれないので、

その情報を待つ手もありますが、、、(なさそうなので)

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 12, 2024 Sep 12, 2024

リンクをクリップボードにコピー

コピー完了

あらためて(最初から適切に答えられてなくて申し訳ないです…)

ExportOptionsPNG24クラスにresolutionというプロパティは、存在しないですね。

https://ai-scripting.docsforadobe.dev/jsobjref/ExportOptionsPNG24.html?highlight=ExportOptionsPNG24

画面表示専用の形式として72ppi固定なんですかね。

なので、スケール調整により相当値のpixel数で出力するしかありません。

 

    app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;

    var doc = app.activeDocument;
    var pngExportOpts = new ExportOptionsPNG24();

    var resolution = 300; // 任意の解像度(希望の解像度)

    pngExportOpts.antiAliasing = true;
    pngExportOpts.transparency = false;
    pngExportOpts.artBoardClipping = false;
    // pngExportOpts.resolution = 300;  // 定義不可

    // 希望の解像度(ppi) / 規定の解像度72(ppi) * 100(%)
    pngExportOpts.horizontalScale = resolution / 72 * 100;
    pngExportOpts.verticalScale = resolution / 72 * 100;

    targetFile = new File("~/desktop/" + doc.name.replace(/(\..+)?$/, ".png"));
    doc.exportFile( targetFile, ExportType.PNG24, pngExportOpts);

 

こんなアートボードでテストしました。

スクリーンショット 2024-09-13 10.13.18.png

 

書き出された画像をPhotoshopで開き、画像解像度。

スクリーンショット 2024-09-13 10.13.56.png

 

・再サンプルのチェックを外す

・解像度を300ppiに

・幅、高さの単位をpointに

スクリーンショット 2024-09-13 10.14.24.png

 

小数出てんじゃん、ぴったりじゃないじゃん、という点については、

300 / 72 * 100 = 416.66666666666..... が四捨五入された、ということで納得してもらうしかないです。

ピクセルは最小値が1なの(整数でしか表現できないの)で仕方なしです。

これを嫌う場合は 72ppi の整数倍の解像度(144ppi, 216ppi, 288ppi, 360ppi...)で出力するしか手がありません。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Sep 12, 2024 Sep 12, 2024

リンクをクリップボードにコピー

コピー完了

ちなみに なのですが、

前回および今回のスクリプトの元はどこかのサイトを参考にされたものですか?

それともChatGPTとか?

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Sep 12, 2024 Sep 12, 2024

リンクをクリップボードにコピー

コピー完了

最新

イラストレーター2018以降であればスクリーン用書き出し相当のexportForScreensが使えます。

scaleTypeにSCALEBYRESOLUTIONを設定して、scaleTypeValueで解像度を設定できます。
以下、開いているドキュメントをデスクトップに作成したフォルダにPNGで書き出すサンプルです。

 

uname = $.getenv('USER');
//書き出しフォルダ名
soutfname = "PNG"

var hiduke=new Date();
var year = hiduke.getFullYear();
var month = ("000" + (hiduke.getMonth()+1)).substr(-2);
var day = ("000" + hiduke.getDate()).substr(-2);
sfolderpass = "/Users/" + uname + "/Desktop/"+ year + month + day + "_" + soutfname;
outfolder = new Folder(sfolderpass);
outfolder.create()

mydocument = app.activeDocument;
exportOptions = new ExportForScreensOptionsPNG24();
exportOptions.antiAliasing = AntiAliasingMethod.TYPEOPTIMIZED
exportOptions.artBoardClipping = false;
exportOptions.transparency = false;
exportOptions.scaleType = ExportForScreensScaleType.SCALEBYRESOLUTION
exportOptions.scaleTypeValue = 300
Export = new ExportForScreensItemToExport();

mydocument.exportForScreens(outfolder, ExportForScreensType.SE_PNG24, exportOptions,Export);

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines