PixelGrabberでgrabPixels 2008/08/20
2008/08/21

Javaです。

BufferedImageをgetScaledInstanceメソッドで返されるImageはOS依存っぽいクラスでした。
mac osxだとapple.awt.OSXImageでした。windowsでサンのjdkだとsun.awt.image.ToolkitImageでした。
この辺の知識がすごく曖昧。

何がしたいかといいますと、getScaledInstanceしたイメージから任意の位置のピクセルを取得したいということですが、BufferedImageですとgetRGB(int x, int y) メソッドがあるのですがImageインターフェイスにはないです。

どうしたものかと悩んで、「困ったときのJavadoc」というわけで、眺めていますと、その名もずばりPixelGrabberがありました。
このPixelGrabberには、getPixelsというメソッドがあります。new したあと呼んでもnullが返ってきてしまい戸惑いました。
理由は実際の取得のための呼び出しをしていなかったからです。

JavadocにstartGrabbingについての記述がありました。

PixelGrabber にピクセルの取り込み開始を要求します。


実際はgrabPixelsメソッドを呼ぶのがいいみたい。
Image または ImageProducer に、ピクセルの転送を開始し、転送を要求された矩形のピクセルがすべて転送されるまで待つことを要求します。


grabPixelsをしたあとstatusをみるというのが正しい使い方みたいですね。

: