#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, в пикселях гистограммы.
Я предположил, что два изображения имеют одинаковый размер.