リンクをクリップボードにコピー
コピー完了
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; // 最大解像度の設定
イラストレーター2018以降であればスクリーン用書き出し相当のexportForScreensが使えます。
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
...
リンクをクリップボードにコピー
コピー完了
たぶん確認手段が(略)
書き出した画像をPhotoshopで開いて、
「画像解像度」で解像度を確認、
72になっていたら「再サンプルのチェックを外して300を入力したとき、幅&高さが書き出し元のアートボードと一致しているか
などはお済みでしょうか?
リンクをクリップボードにコピー
コピー完了
PNGとjpegで試してみましたが、
exportOptions.resolution = 300;
と設定しても等倍・72dpiで書き出されますね。
(もちろん手動のメニュー操作では300dpiで書き出されます。)
リファレンス詳細まで調べていませんが、
extendScriptにおいて exportOptions.resolution での解像度設定は Tiff や PSD に限られるのかも。
(確定情報ではないので違っていたらごめんなさい)
もし、現状、等倍・72dpi で書き出されているなら、
exportOptions.horizontalScale と exportOptions.verticalScale を
擬似的に約4.17倍(300/72)にしてみるなど検討してみては。
(私が個人的使うなら、それで充分なのですが、、、)
もしかしたら、PNGとjpeg でも 解像度を操作できるプロパティがあるかもしれないので、
その情報を待つ手もありますが、、、(なさそうなので)
リンクをクリップボードにコピー
コピー完了
あらためて(最初から適切に答えられてなくて申し訳ないです…)
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);
こんなアートボードでテストしました。
書き出された画像をPhotoshopで開き、画像解像度。
・再サンプルのチェックを外す
・解像度を300ppiに
・幅、高さの単位をpointに
小数出てんじゃん、ぴったりじゃないじゃん、という点については、
300 / 72 * 100 = 416.66666666666..... が四捨五入された、ということで納得してもらうしかないです。
ピクセルは最小値が1なの(整数でしか表現できないの)で仕方なしです。
これを嫌う場合は 72ppi の整数倍の解像度(144ppi, 216ppi, 288ppi, 360ppi...)で出力するしか手がありません。
リンクをクリップボードにコピー
コピー完了
ちなみに なのですが、
前回および今回のスクリプトの元はどこかのサイトを参考にされたものですか?
それともChatGPTとか?
リンクをクリップボードにコピー
コピー完了
イラストレーター2018以降であればスクリーン用書き出し相当のexportForScreensが使えます。
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);