У меня есть несколько изображений, открытых одновременно в фотошопе, но они должны быть проверены соответственно с именем файла и сохранены соответственно. Этот скрипт, кажется, работает с одним изображением, но другие открытые изображения не работают. Спасибо!
Задача 1: Граница должна быть черной, а не белой.
Проблема 2: Необходимо работать со всеми открытыми изображениями. В настоящее время работает с первым изображением, открытым не остальные изображения.
Это то, что делает скрипт
Name.SizexSize.png -> добавить границу 1px -> JPG 59 КБ -> Сохранить для Интернета + без запроса. Name.SizexSize.png -> добавить границу 1px -> JPG 39 КБ -> Сохранить для Интернета + без запроса. Перезаписать оригиналы.
for (var i = 0; i < documents.length; i++) {
activeDocument = documents[i]; //will change active document to one of
the opened
var docNameSize = activeDocument.name.split(".")[1].split("x"); //will
get you [Size, Size] from Name.SizexSize.png;
for (var k = 0; k < docNameSize.length; k++) docNameSize[k] =
parseInt(docNameSize[k]); //will convert [Size, Size] to numbers
}
for (var i = 0; i < documents.length; i++) {
activeDocument = documents[i]; //will change active document to one
of the opened
var docNameSize = activeDocument.name.split(".")[1].split("x");
//will get you [Size, Size] from Name.SizexSize.png;
for (var k = 0; k < docNameSize.length; k++) docNameSize[k] =
parseInt(docNameSize[k]); //will convert [Size, Size] to numbers
}
selectAll()
contractSelection(1)
invertSelection()
fillWithWhiteColor()
deselect()
function cTID(s)
{
return app.charIDToTypeID(s);
};
function sTID(s)
{
return app.stringIDToTypeID(s);
};
function selectAll()
{
var desc26 = new ActionDescriptor();
var ref2 = new ActionReference();
ref2.putProperty(cTID('Chnl'), cTID('fsel'));
desc26.putReference(cTID('null'), ref2);
desc26.putEnumerated(cTID('T '), cTID('Ordn'), cTID('Al '));
executeAction(cTID('setd'), desc26, DialogModes.NO);
}
function contractSelection(_value)
{
var desc30 = new ActionDescriptor();
desc30.putUnitDouble(cTID('By '), cTID('#Pxl'), _value);
desc30.putBoolean(sTID('selectionModifyEffectAtCanvasBounds'), true);
executeAction(cTID('Cntc'), desc30, DialogModes.NO);
};
function invertSelection()
{
executeAction(cTID('Invs'), undefined, DialogModes.NO);
};
function fillWithWhiteColor()
{
var desc35 = new ActionDescriptor();
desc35.putEnumerated(cTID('Usng'), cTID('FlCn'), cTID('Clr '));
var desc36 = new ActionDescriptor();
desc36.putUnitDouble(cTID('H '), cTID('#Ang'), 0.000000);
desc36.putDouble(cTID('Strt'), 0.000000);
desc36.putDouble(cTID('Brgh'), 100.000000);
desc35.putObject(cTID('Clr '), cTID('HSBC'), desc36);
desc35.putUnitDouble(cTID('Opct'), cTID('#Prc'), 100.000000);
desc35.putEnumerated(cTID('Md '), cTID('BlnM'), cTID('Nrml'));
executeAction(cTID('Fl '), desc35, DialogModes.NO);
};
function deselect()
{
var desc38 = new ActionDescriptor();
var ref3 = new ActionReference();
ref3.putProperty(cTID('Chnl'), cTID('fsel'));
desc38.putReference(cTID('null'), ref3);
desc38.putEnumerated(cTID('T '), cTID('Ordn'), cTID('None'));
executeAction(cTID('setd'), desc38, DialogModes.NO);
};
saveJPG(
{
path: activeDocument.path,
maxSize: 50 //size in kbs
})
function saveJPG(_data)
{
if (_data.path == undefined) return false;
_data.name = _data.name == undefined ? activeDocument.name : _data.name;
_data.quality == undefined && _data.quality = 75;
if (!new Folder(_data.path).exists)
{
alert("Output path doesn't exist!"); //you can add a function to create a path if needed
return false
}
var options = new ExportOptionsSaveForWeb(),
jpgFile = new File(_data.path + '/' + getName(_data.name) + '.jpg');
options.format = SaveDocumentType.JPEG;
options.quality = _data.quality;
activeDocument.exportDocument(jpgFile, ExportType.SAVEFORWEB, options);
if (_data.maxSize != undefined)
{
var ms = _data.maxSize * 1000;
if (jpgFile.length > ms)
{
if (!jpgFile.remove())
{
alert('Save file is locked, please make sure it\'s not opened anywhere');
return
};
saveJPG(
{
path: _data.path,
name: _data.name,
maxSize: _data.maxSize,
quality: _data.quality - 2
});
}
};
function getName(fullName)
{
var temp = String(fullName).split("/"),
fullName = temp.pop();
return fullName.replace(/\.[^.]+$/g, "")
};
};