- PR -

ピクセル値の取得

1
投稿者投稿内容
kosuke
常連さん
会議室デビュー日: 2005/03/24
投稿数: 48
投稿日時: 2005-03-24 15:51
質問があります。画像のある座標におけるピクセル値を取得したいのですが、
ソース1では問題なく実行できるのですが, ソース2ではうまく実行できません。
どなたかご教示下さい。よろしくお願いします。

ソース1:
for(int loop1 = 1; loop1 < image.getWidth(this); loop1++) {
for(int loop2 = 0; loop2 < image.getHeight(this); loop2++) {
Color CurPixel = new Color(image.getRGB(loop1,loop2));
}
}

ソース2:
for(int loop1 = 1; loop1 < image.getWidth(this); loop1++) {
for(int loop2 = 0; loop2 < image.getHeight(this); loop2++) {
Color CurPixel = new Color(image.getRGB(loop1,loop2));
Color PrePixel = new Color(image.getRGB(loop1-1,loop2));
}
}

エラー内容:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 256

目的は現在のピクセル値とx座標が1つ前のピクセル値を取得したいのですが、
現在のピクセル値は取得できても1つ前のピクセル値は取得できません。
エラー内容を見ると配列をはみ出しているようなのですがloop1を1からまわしているので問題ないような気がします。
Odakaz
ベテラン
会議室デビュー日: 2004/05/24
投稿数: 70
投稿日時: 2005-03-24 16:04
引用:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 256


となっているので、単に画像の幅が255までしかないのにはみ出てしまってるんではないでしょうか?
kosuke
常連さん
会議室デビュー日: 2005/03/24
投稿数: 48
投稿日時: 2005-03-24 16:20
すみません。書き忘れましたが、画像のサイズは320 x 240としています。
けむ
常連さん
会議室デビュー日: 2003/09/26
投稿数: 40
投稿日時: 2005-03-25 00:12
getRGBとColorのコンストラクタのどちらで例外が発生しているのでしょうか?
kosuke
常連さん
会議室デビュー日: 2005/03/24
投稿数: 48
投稿日時: 2005-03-25 14:57
返信遅れてすみません。
getRGBでエラーが出ているようです。

for(int loop1 = 1; loop1 < x.getWidth(this); loop1++) {
for(int loop2 = 0; loop2 < x.getHeight(this); loop2++) {
Color PrePixel = new Color(x.getRGB(loop1- 2 ,loop2));
} ^^^
}

とすると、当然ながら
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Coordinate
out of bounds!
at sun.awt.image.IntegerInterleavedRaster.getDataElements(Unknown Source
)
at java.awt.image.BufferedImage.getRGB(Unknown Source)
となります。
Odakaz
ベテラン
会議室デビュー日: 2004/05/24
投稿数: 70
投稿日時: 2005-03-25 20:12
[quote]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Coordinate
out of bounds!
at sun.awt.image.IntegerInterleavedRaster.getDataElements(Unknown Source
)
at java.awt.image.BufferedImage.getRGB(Unknown Source)
[/quote]
このスタックトレースから、むしろIntegerInterleavedRaster#getDataElementsで
例外が発生してるように見えますね。
ということで、少し検索してみたら、それっぽいものが見つかりました

http://forum.java.sun.com/thread.jspa?threadID=566301&messageID=2805116

ちゃんと目を通していないですが、もし参考になれば幸いです。

[ メッセージ編集済み 編集者: Odakaz 編集日時 2005-03-25 20:18 ]
1

スキルアップ/キャリアアップ(JOB@IT)