我正在尝试创建一个脚本,可以在一次单击中从Photoshop保存JPG文件。它将以与原始PSD文件相同的文件名相同的目录中保存,只是以JPG格式保存。我在网上找到了一个脚本,可以实现我想要的90%,但是会打开两个对话框 - 第一个询问是否要重命名文件,第二个对话框指定位置。目前我可以按两次“Enter”,它就可以工作,但我不想在第一次出现这两个对话框(因此脚本将自动为我在这些对话框上按“Enter”键,希望甚至不需要打开这些对话框,而是在后台运行)。
以下是我目前拥有的脚本。我稍微修改了一下,所以它不像最初那样保存PSD文件,只保存JPG。不需要Illustrator部分,所以不要太担心它。
非常感谢您的帮助。我有基本的编码技能,但从未使用过Photoshop脚本。
谢谢你抽出时间。
Alexey.B
以下是我目前拥有的脚本。我稍微修改了一下,所以它不像最初那样保存PSD文件,只保存JPG。不需要Illustrator部分,所以不要太担心它。
// ***** SaveTo.jsx Version 1.1. *****
Changelog:
v.1.1.
- Fixed a weird issue where saving as jpg causes weird dialog stuff to happen if it's not saved as a copy. This started happening somewhere between PS CC 2017 and PS CC 2018.
- Variable "pdfProfileAI" now has a failsafe where if the set profile doesn't exist, the first found profile is used instead. So what ever happens the pdf will be saved, but it might be using a wrong profile, but don't worry, the script will tell you if this happened and gives the name of the profile that was used. This failsafe would still fail if someone doesn't have any presets at all, but if that ever happens, he had it coming...
- Added a new variable "listOfPresetsAI" so that you can easily get a list of preset so you can copy and paste the preset name to "pdfProfileAI";
var newDocPath = "~/Desktop/";
var listOfPresetsAI = false; // When set to true the script won't save anything but instead gives you a list of pdf preset names.
var pdfProfileAI = "CMYK - Swop v2s";
var dialogOffsetX = 250; // Subtracts from the center of the screen = Center of the screen horizontally - 250px.
var dialogOffsetY = 200; // Just a static value = 200px from the top of the screen.
var o = {};
var appName = app.name;
var pdfPresetNoMatch = false;
// If Photoshop
if ( appName === "Adobe Photoshop" ) {
o.dialogTitle = "Save As: .jpg";
o.formats = ['jpg'];
o.app = 'ps';
}
// If Illustrator
else if ( appName === "Adobe Illustrator" ) {
o.dialogTitle = "Save As: .ai and .pdf";
o.formats = ['pdf','ai'];
o.app = 'ai';
}
function dialog() {
// Dialog
var dlg = new Window("dialog");
dlg.text = o.dialogTitle;
var panel = dlg.add('panel');
panel.alignChildren = ['left','center'];
panel.orientation = 'row';
var text1 = panel.add('statictext');
text1.text = 'Filename: ';
var text2 = panel.add('editText');
text2.text = app.activeDocument.name.split('.')[0];
text2.preferredSize = [530,23];
text2.active = true;
var button1 = panel.add('button', undefined, undefined, { name: 'cancel'});
button1.text = "Cancel";
var button2 = panel.add('button', undefined, undefined, { name: 'ok'});
button2.text = "Save...";
button2.onClick = function ( e ) {
save.init( dlg, text2.text );
};
dlg.onShow = function () {
dlg.location.x = dlg.location.x - dialogOffsetX;
dlg.location.y = dialogOffsetY;
}
dlg.show();
}
var save = {
init: function( dlg, dialog_filename ) {
dlg.close();
var doc = app.activeDocument;
var doc_path;
try {
doc_path = doc.path.toString();
} catch(e) {
doc_path = newDocPath;
}
var output_folder = Folder.selectDialog( 'Output folder', doc_path === "" ? newDocPath : doc_path );
if ( output_folder != null ) {
for ( var i = 0; i < o.formats.length; i++ ) {
var save_options = save[ o.formats[i] ]();
if ( o.app === 'ps' ) {
doc.saveAs( new File( output_folder + '/' + dialog_filename ), save_options, ( o.formats[i] === 'jpg' ? true : false ), Extension.LOWERCASE );
}
else if ( o.app === 'ai' ) {
doc.saveAs( new File( output_folder + '/' + dialog_filename ), save_options );
}
}
}
},
ai: function() {
var ai_options = new IllustratorSaveOptions();
ai_options.flattenOutput = OutputFlattening.PRESERVEAPPEARANCE;
return ai_options;
},
pdf: function() {
var pdf_Options = new PDFSaveOptions();
pdf_Options.pDFPreset = checkPresets( false, pdfProfileAI );
return pdf_Options;
},
psd: function() {
var psd_Options = new PhotoshopSaveOptions();
return psd_Options;
},
jpg: function() {
var jpg_Options = new JPEGSaveOptions();
jpg_Options.embedColorProfile = true;
jpg_Options.FormatOptions = FormatOptions.OPTIMIZEDBASELINE; // OPTIMIZEDBASELINE, PROGRESSIVE, STANDARDBASELINE
// jpg_Options.scans = 5; // For FormatOptions.PROGRESSIVE
jpg_Options.matte = MatteType.WHITE; // BACKGROUND, BLACK, FOREGROUND, NETSCAPE, NONE, SEMIGRAY, WHITE
jpg_Options.quality = 11; // 0-12
return jpg_Options;
}
};
function checkPresets( list, testPreset ) {
var pdfPresets = app.PDFPresetsList;
if ( list === true ) {
alert( "\n" + pdfPresets.join('\n') );
}
else {
var preset = null;
for ( var i = pdfPresets.length; i--; ) {
if ( pdfPresets[i] === testPreset ) {
preset = testPreset;
}
}
pdfPresetNoMatch = (preset === null);
return (pdfPresetNoMatch ? pdfPresets[0] : preset);
}
}
if ( listOfPresetsAI === true ) {
checkPresets( true );
}
else if ( app.documents.length > 0 ) {
dialog();
if ( pdfPresetNoMatch ) alert( "Couldn't use your PDF preset!!! \n Used " + app.PDFPresetsList[0] + " instead." );
}
非常感谢您的帮助。我有基本的编码技能,但从未使用过Photoshop脚本。
谢谢你抽出时间。
Alexey.B