#javascript #photoshop
#javascript #photoshop
Вопрос:
я хочу немного поработать с javascript в Photoshop. Технически, мне просто нужно знать, как сравнивать значения цвета пикселей af, если бы они были массивом с тремя целочисленными значениями в каждом, например: (псевдокод)
for all pixels x
for all pixels y
if left pixel's green channel is bigger than red channel:
set the blue channel to 25
else
if the blue channel is greater than 50
set the green channel to 0
в документации есть масса вещей, таких как фильтры, текст и слои, которые вы можете сделать, но как вы делаете что-то настолько простое, как это?
Ответ №1:
Чтение и запись значений пикселей в скриптах Photoshop действительно не так просты, как могло бы быть… Ознакомьтесь со следующим скриптом, который инвертирует синий канал изображения:
var doc = app.open(new File("~/Desktop/test1.bmp"));
var sampler = doc.colorSamplers.add([0, 0]);
for (var x = 0; x < doc.width; x) {
for (var y = 0; y < doc.height; y) {
sampler.move([x, y]);
var color = sampler.color;
var region = [
[x, y],
[x 1, y],
[x 1, y 1],
[x, y 1],
[x, y]
];
var newColor = new SolidColor();
newColor.rgb.red = color.rgb.red;
newColor.rgb.green = 255 - color.rgb.green;
newColor.rgb.blue = color.rgb.blue;
doc.selection.select(region);
doc.selection.fill(newColor);
}
}
Я не уверен, что есть более привлекательный способ настройки цвета пикселя, чем трюк с выделением заливкой.
Этот скрипт работает очень медленно, поэтому, возможно, скрипты Photoshop — не лучший инструмент для манипулирования пикселями…
Комментарии:
1. Спасибо. О производительности: как глупо с моей стороны было думать, что я могу манипулировать пикселями с помощью photoshop : D