匿名質問者

PhotoShopのJavaScriptを使って任意の位置の1ドットのRGBを取得したいと考えています。

ttp://d.hatena.ne.jp/Yappy/20071001/1191258148
などを参考にしたのですが、「channels[0].histogram」のところで取得するヒストグラムのデータが正しく取得できません。(0か255になる)何がいけないのでしょうか?

環境:OSX(10.6.8)
PhotoShop:Ver12.0.4 x64

Windows環境(SP3、PhotoShop Ver12.0 x32)では、正しく動作します。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/09/04 11:20:03

回答1件)

匿名回答1号 No.1

0~255まで順番にピクセル数を調べていき、0以外の値が見つかればそれが色の輝度になります。この方法で、R、G、Bの3つのチャンネルについて調べていけば、ピクセル単位の色を読み出せる、というわけです。

ヒストグラムはhistogram配列に入っているので、0~255まで配列内容を調べていけばピクセルの輝度が取得できます。たとえばR(赤)の輝度は以下のようにして読み出せます。
data = activeDocument.channels[0].histogram;
for (i=0; i<256; i++) if (data[i] > 0) { R = i; break; }

ASCII.jp:PhotoshopのフィルターをJavaScriptで作る!|古籏一浩のJavaScriptラボ
ヒストグラムが0以外になったところが輝度です。

他8件のコメントを見る
匿名回答1号

Adobe Forums: x32では動作するがx64では動作しない
http://forums.adobe.com/thread/919610

こういうバグのひとつだったり

2012/08/29 12:06:01
匿名質問者

バグだったら、、、、どうしようもないのでしょうか・・・(泣)

2012/08/29 15:04:56
匿名質問者

質問者から

匿名質問者2012/08/28 12:58:49

ご回答有難うございます。

ヒストグラム配列の添え字が0か、255のところにしか反応しないのです。

質問中の「(0か255になる)」とは、明度(ヒストグラムの添え字)が0か255にしかならないという意味で捉えて頂ければ幸いです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません