Хорошо, если вы хотите поддерживать Photoshop CS2, у меня есть кое-что, что будет работать, но, мягко говоря, hacky
.
Основная идея состоит в том, чтобы заставить ImageMagick делать это от имени Photoshop — и это, вероятно, быстрее, чем любой доступ к отдельным пикселям в Photoshop's ExtendScript. Итак, команда ImageMagick для просмотра пикселей в текстовом/удобочитаемом виде такова:
convert out.png txt:
# ImageMagick pixel enumeration: 256,256,255,srgba
0,1: (255,0,0,0.996078) #FF0000FE srgba(255,0,0,0.996078)
1,1: (255,0,0,0.996078) #FF0000FE srgba(255,0,0,0.996078)
2,1: (255,0,0,0.996078) #FF0000FE srgba(255,0,0,0.996078)
3,1: (255,0,0,0.996078) #FF0000FE srgba(255,0,0,0.996078)
Вы можете видеть, что прозрачность для этой строки равна FE
или 0,996078.
Итак, если вам нужен 1 пиксель, скажем, 128 128, вы должны сделать это:
convert out.png -crop 1x1+128+128 -depth 8 txt:
# ImageMagick pixel enumeration: 1,1,255,srgba
0,0: (255,0,0,0.498039) #FF00007F srgba(255,0,0,0.498039)
и имеет непрозрачность 7F
или 0,498039.
Итак, чтобы понять, что вы хотите сделать, ваша предполагаемая функция getPixelARGB(doc, x, y)
должна будет выполнить следующие шаги:
1. duplicate document `doc`
2. save duplicate as `PNG` (to preserve transparency) on somewhere like `/tmp`
3. invoke ImageMagick - see below
4. read result - see below
Итак, как вы вызываете ImageMagick и читаете его вывод? Вы можете использовать это:
app.system("convert /tmp/tmp.png -crop 1x1+128+128 -depth 8 txt: > /tmp/result.txt")
var w = new File("/tmp/result.txt");
w.open('r');
var str = "";
while(!w.eof)
str += w.readln();
w.close();
alert(str);
person
Mark Setchell
schedule
05.11.2014