Скрипты ФОТОШОПа
Новая тема Написать ответ
# Чт Июн 05, 2008 1:21 pmMrBin Зарег.: 05.07.2007 ; Сообщ.: 76Ответить с цитатой
Искал САБЖ в форуме, ничего не нашел, решил сделать тему.

Давайте выкладывать здесь полезные скрипты.

Как юзать скрипты:
photoshop>file>scripts>browse

Можно сделать так, чтобы скрипты появлялись в списке (photoshop>file>scripts>),
для этого необходимо скрипт поместить в папку:
...\Adobe Photoshop CS2\Presets\Scripts\


Последний раз редактировалось: MrBin (Чт Июн 05, 2008 1:44 pm), всего редактировалось 2 раз(а)
# Чт Июн 05, 2008 1:23 pmMrBin Зарег.: 05.07.2007 ; Сообщ.: 76Ответить с цитатой
Делал под свои нужды скриптец для фотошопа 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;

# Чт Июн 05, 2008 1:26 pmMrBin Зарег.: 05.07.2007 ; Сообщ.: 76Ответить с цитатой
Скрипт от 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);
   }
}

# Ср Июн 11, 2008 7:27 amMrBin Зарег.: 05.07.2007 ; Сообщ.: 76Ответить с цитатой
В первом скрипте можно добавить следующий параметр:
Код:
options.quality = 15;


после строчек:
Код:
var options = new ExportOptionsSaveForWeb(); // опции экспорта
    options.format = SaveDocumentType.JPEG;



, чтобы не особо париться с оптимизацией под ВЕБ.
Выставил 15 эксперементальным путём.
Фотки были 2 мегапиксела примерно 400-500Кб( в jpg) - стали 50-100Кб с небольшой потерей качества.
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.