|
|
|
Искал САБЖ в форуме, ничего не нашел, решил сделать тему.
Давайте выкладывать здесь полезные скрипты.
Как юзать скрипты:
photoshop>file>scripts>browse
Можно сделать так, чтобы скрипты появлялись в списке (photoshop>file>scripts>),
для этого необходимо скрипт поместить в папку:
...\Adobe Photoshop CS2\Presets\Scripts\ |
|
Последний раз редактировалось: MrBin (Чт Июн 05, 2008 1:44 pm), всего редактировалось 2 раз(а) |
|
|
|
|
Делал под свои нужды скриптец для фотошопа CS2.
Он проставляет копирайт у кучи картинок из указанного каталога и сохраняет их в другой каталог.
имя файла: SetCopyrite.jsx
Содержимое:
Код: |
#target photoshop
app.bringToFront();
app.displayDialogs = DialogModes.NO;
app.preferences.rulerUnits = Units.INCHES;
app.preferences.typeUnits = TypeUnits.POINTS;
var FolderInName = "C:/Temp/images_strojka/"; // путь к папке с изображениями-оригиналами
var FolderOutName = "C:/Temp/images_strojka1/";// путь к папке с обработанными изображениями
var FileMask = "*.jpg"; //маска для файлов, в данном примере - все файлы jpg
var options = new ExportOptionsSaveForWeb(); // опции экспорта
options.format = SaveDocumentType.JPEG;
var textColor = new SolidColor; // цвет текста в RGB
textColor.rgb.red = 0;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;
var textsize = 24; // размер текста
var text = "www.MySite.ru"; // текст
var DeltaHorizontal = 2.25; //смещение текста по горизонтали, справа
var DeltaVertical = 0.25; // смещение текста по вертикали, снизу
var PositionHorizontal;
var PositionVertical;
var fillColor = new SolidColor(); // цвет фона текста
fillColor.rgb.red = 255;
fillColor.rgb.green = 255;
fillColor.rgb.blue = 255;
// определяем переменную папки и получаем массив файлов по заданной маске FileMask
var fold = new Folder(FolderInName);
if (!fold.exists){
throw "Указанная папка не найдена:"+FolderInName;
}
var fold1 = new Folder(FolderOutName);
if (!fold1.exists){
throw "Указанная папка не найдена:"+FolderOutName;
}
var ArrayFiles = fold.getFiles(FileMask);
// обработка файлов
for (ii = 0; ii < ArrayFiles.length; ii++) {
var docRef = open(ArrayFiles[ii]);
var targetFile = new File(FolderOutName +docRef.name);
if(!targetFile.exists){
PositionHorizontal = docRef.width-DeltaHorizontal;
PositionVertical = docRef.height-DeltaVertical;
// добавляем слой с текстом
var newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;
newTextLayer.textItem.contents = text;
newTextLayer.textItem.position = Array(PositionHorizontal, PositionVertical);
newTextLayer.textItem.size = textsize;
newTextLayer.textItem.color = textColor;
// закрашиваем фон текста
var ff = newTextLayer.bounds;
docRef.activeLayer = docRef.layers[1];
docRef.selection.select(Array (Array(ff[0]*docRef.resolution, ff[1]*docRef.resolution),
Array(ff[2]*docRef.resolution, ff[1]*docRef.resolution),
Array(ff[2]*docRef.resolution, ff[3]*docRef.resolution),
Array(ff[0]*docRef.resolution, ff[3]*docRef.resolution)),
SelectionType.REPLACE, 0, false);
docRef.selection.fill(fillColor);
// выгружаем в ЖПГ
docRef.exportDocument(targetFile, ExportType.SAVEFORWEB, options);
}
docRef.close(SaveOptions.DONOTSAVECHANGES);
}
// очищаем память от объектов
options = null;
textColor = null;
newTextLayer = null;
fold = null;
targetFile = null;
docRef = null;
fold1 = null;
fillColor = null;
|
|
|
|
|
|
|
Скрипт от vladsm, взял тут:
prizrak.ЖЖ.com/129475.html?thread=481987#t481987
Ресайзит до 750х500 (500х750) все .jpg в указаной дире (предполагает, что исходные картинки с размером в духе 3000х2000), стараясь упихать результат в 128Kb.
Код: |
#target photoshop
// in case we double clicked the file
app.bringToFront();
app.preferences.rulerUnits = Units.PIXELS;
var BaseH = 3000;
var BaseW = 2000;
var FinalH = 750;
var FinalW = 500;
var saveSize = 132000;
var FILE_TYPE = ".jpg";
var SEARCH_MASK = "*" + FILE_TYPE;
var X_NOINPUT = "noInput";
var X_BADDOC = "badDoc";
var X_RERROR = "resizeError";
var X_SERROR = "saveError";
main();
function main(){
try{
var inputFolder = Folder.selectDialog("Select a folder to process");
if (inputFolder == null){
throw X_NOINPUT;
}
// get all files in the input folder
var fileList = inputFolder.getFiles(SEARCH_MASK);
for (var i = 0; i < fileList.length; i++) {
// Only want to open non-hidden files (and no folders)
if ((fileList[i] instanceof File) && (fileList[i].hidden == false)) {
// Open the file in Photoshop
var docRef = open(fileList[i]);
if (docRef == null){
throw X_BADDOC;
}
if(!mySharpResize(docRef)){
throw X_RERROR;
}
if(!mySave(docRef)){
throw X_SERROR;
}
// Close the Photoshop file
docRef.close(SaveOptions.DONOTSAVECHANGES);
}
}
alert('Done!');
}
catch (e){
alert(e);
}
}
function mySharpResize(docRef){
try{
if(docRef.colorProfileName!='sRGB IEC61966-2.1'){
docRef.convertProfile('sRGB IEC61966-2.1',Intent.RELATIVECOLORIMETRIC,true,true);
}
if(docRef.height>docRef.width){
//vertical
BH = BaseH;
BW = BaseW;
FH = FinalH;
FW = FinalW;
}else{
//horizontal
BH = BaseW;
BW = BaseH;
FH = FinalW;
FW = FinalH;
}
docRef.changeMode(ChangeMode.LAB);
docRef.activeChannels=Array(docRef.channels.getByName('Lightness'));
if(docRef.width>BW){
docRef.artLayers[0].applyUnSharpMask(20,2,10);
docRef.resizeImage(BW,BH,docRef.resolution,ResampleMethod.BICUBIC);
}
BW = Number(BW/2);
BH = Number(BH/2);
if(docRef.width>BW){
docRef.artLayers[0].applyUnSharpMask(120,0.8,2);
docRef.resizeImage(BW,BH,docRef.resolution,ResampleMethod.BICUBIC);
}
if(docRef.width>FW){
docRef.artLayers[0].applyUnSharpMask(120,0.4,1);
docRef.resizeImage(FW,FH,docRef.resolution,ResampleMethod.BICUBIC);
}
docRef.artLayers[0].applyUnSharpMask(120,0.2,0);
docRef.changeMode(ChangeMode.RGB);
return true;
}
catch (e){
alert("Error: " + e);
}
}
function mySave(docRef){
try{
var options = new ExportOptionsSaveForWeb();
options.format = SaveDocumentType.JPEG;
var targetName = docRef.path + "/" + docRef.name.match( /[^.]+/) +"_b.jpg"; // Get root name, add required extension.
var targetFile = new File(targetName);
for (options.quality = 95; options.quality >0; options.quality = options.quality -10) {
if (targetFile.exists){
targetFile.remove();
}
docRef.exportDocument(targetFile, ExportType.SAVEFORWEB, options);
var fileRef = new File( targetName ); // Necessary as "targetFile" length isn't refreshed.
if (fileRef.length < saveSize ){
break; // All done if it's small enough already.
}
}
return true;
}
catch (e){
alert("Error: " + e);
}
}
|
|
|
|
|
|
|
В первом скрипте можно добавить следующий параметр:
Код: |
options.quality = 15;
|
после строчек:
Код: |
var options = new ExportOptionsSaveForWeb(); // опции экспорта
options.format = SaveDocumentType.JPEG;
|
, чтобы не особо париться с оптимизацией под ВЕБ.
Выставил 15 эксперементальным путём.
Фотки были 2 мегапиксела примерно 400-500Кб( в jpg) - стали 50-100Кб с небольшой потерей качества. |
|
|
|
|
|
|
|