Написание сценариев в режиме смешивания отличий Photoshop

#javascript #photoshop #photoshop-script

#javascript #photoshop #photoshop-скрипт

Вопрос:

У меня регулярно есть два набора изображений с одинаковыми именами, и я хотел бы написать сценарий процесса проверки различий. Я ищу базовую проверку, если между двумя изображениями нет различий, отбросьте одно из них, если есть разница в один пиксель, сохраните оба. Для тех, кто сомневается в целесообразности выполнения этого в photoshop, это дополнение к другому скрипту, который уже запущен, и эта необязательная проверка поможет уменьшить количество файлов, которые я должен загружать. Я был бы признателен за помощь.

Комментарии:

1. Почему бы вам просто не md5() проверить каждую картинку в каждом наборе на наличие дубликатов?

2. Я хотел бы вставить проверку перед тем, как скрипт сохранит внесенные изменения. Итак, я проверяю, совпадают ли результаты скрипта с предыдущими, и если это так, я не утруждаю себя их сохранением. Но да, выполнение проверки md5 на изображениях было бы разумным решением, к которому я могу вернуться.

Ответ №1:

Если вам действительно нужно сделать это в Photoshop, вот как я бы предложил это:

 var doc1 = app.open(new File("~/Desktop/test1.bmp"));
var doc2 = app.open(new File("~/Desktop/test2.bmp"));

doc2.selection.selectAll();
doc2.selection.copy();

app.activeDocument = doc1;
var newLayer = doc1.paste();
newLayer.blendMode = BlendMode.DIFFERENCE;

var histogram = doc1.histogram;
for (var i = 1; i < histogram.length;   i) {
    if (histogram[i] > 0) {
        alert('Different!');
        break;
    }
}
  

Я вставляю вторую картинку в первую и устанавливаю режим наложения результирующего слоя на difference. Если два рисунка идентичны, результирующее изображение должно быть полностью черным. Поэтому я проверяю, есть ли какие-либо значения цвета, кроме 0, в пикселях гистограммы.

Я предположил, что два изображения имеют одинаковый размер.