JavaTM 2 Platform
Standard Ed. 6

java.awt.image
類別 PixelGrabber

java.lang.Object
  繼承者 java.awt.image.PixelGrabber
所有已實作的介面:
ImageConsumer

public class PixelGrabber
extends Object
implements ImageConsumer

PixelGrabber 類別實作可以附加在 Image 或 ImageProducer 物件上獲得圖像像素子集的 ImageConsumer。下面是一個範例:


 public void handlesinglepixel(int x, int y, int pixel) {
        int alpha = (pixel >> 24) & 0xff;
        int red   = (pixel >> 16) & 0xff;
        int green = (pixel >>  8) & 0xff;
        int blue  = (pixel      ) & 0xff;
        // Deal with the pixel as necessary...
 }

 public void handlepixels(Image img, int x, int y, int w, int h) {
        int[] pixels = new int[w * h];
        PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w);
        try {
            pg.grabPixels();
        } catch (InterruptedException e) {
            System.err.println("interrupted waiting for pixels!");
            return;
        }
        if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
            System.err.println("image fetch aborted or errored");
            return;
        }
        for (int j = 0; j < h; j++) {
            for (int i = 0; i < w; i++) {
                handlesinglepixel(x+i, y+j, pixels[j * w + i]);
            }
        }
 }

 

另請參見:
ColorModel.getRGBdefault()

欄位摘要
 
從介面 java.awt.image.ImageConsumer 繼承的欄位
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
 
建構子摘要
PixelGrabber(Image img, int x, int y, int w, int h, boolean forceRGB)
          創建一個 PixelGrabber 物件,以從指定的圖像中抓取像素矩形部分 (x, y, w, h)。
PixelGrabber(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize)
          創建一個 PixelGrabber 物件,以從指定圖像將像素矩形部分 (x, y, w, h) 抓取到給定的陣列中。
PixelGrabber(ImageProducer ip, int x, int y, int w, int h, int[] pix, int off, int scansize)
          創建一個 PixelGrabber 物件,以從指定 ImageProducer 所產生的圖像中將像素矩形部分 (x, y, w, h) 抓取到給定的陣列中。
 
方法摘要
 void abortGrabbing()
          請求 PixelGrabber 中止獲取圖像。
 ColorModel getColorModel()
          獲取該陣列中所存儲像素的 ColorModel。
 int getHeight()
          獲取(調整圖像高度後的)像素緩衝區的高度。
 Object getPixels()
          獲取像素緩衝區。
 int getStatus()
          返回像素的狀態。
 int getWidth()
          獲取(調整圖像寬度後的)像素緩衝區的寬度。
 boolean grabPixels()
          請求 Image 或 ImageProducer 開始傳遞像素,並等待傳遞完相關矩形中的所有像素。
 boolean grabPixels(long ms)
          請求 Image 或 ImageProducer 開始傳遞像素,並等待傳遞完相關矩形中的所有像素,或者等待到用完逾時期。
 void imageComplete(int status)
          imageComplete 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。
 void setColorModel(ColorModel model)
          setColorModel 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。
 void setDimensions(int width, int height)
          setDimensions 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。
 void setHints(int hints)
          setHints 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。
 void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, byte[] pixels, int srcOff, int srcScan)
          setPixels 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。
 void setPixels(int srcX, int srcY, int srcW, int srcH, ColorModel model, int[] pixels, int srcOff, int srcScan)
          setPixels 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。
 void setProperties(Hashtable<?,?> props)
          setProperties 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。
 void startGrabbing()
          請求 PixelGrabber 開始獲取像素。
 int status()
          返回像素的狀態。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

PixelGrabber

public PixelGrabber(Image img,
                    int x,
                    int y,
                    int w,
                    int h,
                    int[] pix,
                    int off,
                    int scansize)
創建一個 PixelGrabber 物件,以從指定圖像將像素矩形部分 (x, y, w, h) 抓取到給定的陣列中。以預設的 RGB ColorModel 形式將像素存儲到陣列中。像素 (i, j)((i, j) 處於矩形 (x, y, w, h) 內)的 RGB 資料存儲在陣列中的 pix[(j - y) * scansize + (i - x) + off] 位置處。

參數:
img - 從中檢索像素的圖像
x - 從圖像中進行檢索的像素矩形左上角 x 坐標,其相對於預設(未縮放)圖像大小
y - 從圖像中進行檢索的像素矩形左上角 y 坐標
w - 要檢索的像素矩形的寬度
h - 要檢索的像素矩形的高度
pix - 用於保存從圖像中檢索的 RGB 像素的整數陣列
off - 陣列中存儲第一個像素的偏移量
scansize - 陣列中一行像素到下一行像素之間的距離
另請參見:
ColorModel.getRGBdefault()

PixelGrabber

public PixelGrabber(ImageProducer ip,
                    int x,
                    int y,
                    int w,
                    int h,
                    int[] pix,
                    int off,
                    int scansize)
創建一個 PixelGrabber 物件,以從指定 ImageProducer 所產生的圖像中將像素矩形部分 (x, y, w, h) 抓取到給定的陣列中。以預設的 RGB ColorModel 形式將像素存儲到陣列中。像素 (i, j)((i, j) 處於矩形 (x, y, w, h) 內)的 RGB 資料存儲在陣列中的 pix[(j - y) * scansize + (i - x) + off] 位置處。

參數:
ip - 產生圖像的 ImageProducer,從該圖像中檢索像素
x - 從圖像中進行檢索的像素矩形左上角 x 坐標,其相對於預設(未縮放)圖像大小
y - 從圖像中進行檢索的像素矩形左上角 y 坐標
w - 要檢索的像素矩形的寬度
h - 要檢索的像素矩形的高度
pix - 用於保存從圖像中檢索的 RGB 像素的整數陣列
off - 陣列中存儲第一個像素的偏移量
scansize - 陣列中一行像素到下一行像素之間的距離
另請參見:
ColorModel.getRGBdefault()

PixelGrabber

public PixelGrabber(Image img,
                    int x,
                    int y,
                    int w,
                    int h,
                    boolean forceRGB)
創建一個 PixelGrabber 物件,以從指定的圖像中抓取像素矩形部分 (x, y, w, h)。如果每次調用 setPixels 都使用相同的 ColorModel,則像素以原 ColorModel 形式存儲,否則像素將以預設 RGB ColorModel 形式存儲。如果 forceRGB 參數為 true,則像素將總是以預設 RGB ColorModel 形式存儲。無論是哪種情況,PixelGrabber 都會分派一個緩衝區來保存這些像素。如果 (w < 0) 或 (h < 0),則它們預設為傳遞資訊時保存的源資料的寬度和高度。

參數:
img - 要從中檢索圖像資料的圖像
x - 從圖像中進行檢索的像素矩形左上角 x 坐標,其相對於預設(未縮放)圖像大小
y - 從圖像中進行檢索的像素矩形左上角 y 坐標
w - 要檢索的像素矩形的寬度
h - 要檢索的像素矩形的高度
forceRGB - 如果總是應該將像素轉換為預設 RGB ColorModel,則為 true
方法詳細資訊

startGrabbing

public void startGrabbing()
請求 PixelGrabber 開始獲取像素。


abortGrabbing

public void abortGrabbing()
請求 PixelGrabber 中止獲取圖像。


grabPixels

public boolean grabPixels()
                   throws InterruptedException
請求 Image 或 ImageProducer 開始傳遞像素,並等待傳遞完相關矩形中的所有像素。

返回:
如果成功抓取了像素,則返回 true;在中止、有錯誤或逾時的情況下返回 false
拋出:
InterruptedException - 另一個執行緒中斷了此執行緒。

grabPixels

public boolean grabPixels(long ms)
                   throws InterruptedException
請求 Image 或 ImageProducer 開始傳遞像素,並等待傳遞完相關矩形中的所有像素,或者等待到用完逾時期。根據 ms 值的不同,此方法的行為如下:

參數:
ms - 在逾時前等待獲取圖像像素的毫秒數
返回:
如果成功抓取了像素,則返回 true;在中止、有錯誤或逾時的情況下返回 false
拋出:
InterruptedException - 另一個執行緒中斷了此執行緒。

getStatus

public int getStatus()
返回像素的狀態。返回表示可用像素資訊的 ImageObserver 標誌。

返回:
所有相關 ImageObserver 標誌的按位或
另請參見:
ImageObserver

getWidth

public int getWidth()
獲取(調整圖像寬度後的)像素緩衝區的寬度。如果未指定要抓取的像素矩形的寬度,則只有在為圖像傳遞尺寸後此資訊才有效。

返回:
像素緩衝區的最終寬度;如果寬度未知,則為 -1
另請參見:
getStatus()

getHeight

public int getHeight()
獲取(調整圖像高度後的)像素緩衝區的高度。如果未指定要抓取的像素矩形的高度,則只有在為圖像傳遞尺寸後此資訊才有效。

返回:
像素緩衝區的最終高度;如果高度未知,則為 -1
另請參見:
getStatus()

getPixels

public Object getPixels()
獲取像素緩衝區。如果沒有使用保存像素的顯式像素緩衝區來建構 PixelGrabber,則在知道圖像資料的大小和格式前,此方法將返回 null。因為當源圖像使用多個 ColorModel 來傳遞資料時,PixelGrabber 隨時都可能回退到以預設 RGB ColorModel 方式存儲資料,所以在圖像抓取完成前,此方法返回的陣列對象可能隨時間的推移而更改。

返回:
byte 陣列或 int 陣列
另請參見:
getStatus(), setPixels(int, int, int, int, ColorModel, byte[], int, int), setPixels(int, int, int, int, ColorModel, int[], int, int)

getColorModel

public ColorModel getColorModel()
獲取該陣列中所存儲像素的 ColorModel。如果使用顯式像素緩衝區建構此 PixelGrabber,則此方法將始終返回預設的 RGB ColorModel;否則,在知道 ImageProducer 使用的 ColorModel 前,此方法可能返回 null。因為當源圖像使用多個 ColorModel 來傳遞資料時,PixelGrabber 隨時都可能回退到以預設 RGB ColorModel 形式存儲資料,所以在圖像抓取完成前,此方法返回的 ColorModel 物件可能隨時間的推移而更改,且可能無法反映 ImageProducer 用來傳遞像素的任何 ColorModel 物件。

返回:
存儲像素所用的 ColorModel 物件
另請參見:
getStatus(), ColorModel.getRGBdefault(), setColorModel(ColorModel)

setDimensions

public void setDimensions(int width,
                          int height)
setDimensions 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。

註:此方法應該由要從中抓取像素的 Image 的 ImageProducer 調用。使用此類別檢索圖像像素的開發人員應該避免直接調用此方法,因為該調用操作可能導致檢索請求像素時出現問題。

指定者:
介面 ImageConsumer 中的 setDimensions
參數:
width - 尺寸的寬度
height - 尺寸的高度

setHints

public void setHints(int hints)
setHints 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。

註:此方法應該由要從中抓取像素的 Image 的 ImageProducer 調用。使用此類別檢索圖像像素的開發人員應該避免直接調用此方法,因為該調用操作可能導致檢索請求像素時出現問題。

指定者:
介面 ImageConsumer 中的 setHints
參數:
hints - 用於處理像素的提示集

setProperties

public void setProperties(Hashtable<?,?> props)
setProperties 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。

註:此方法應該由要從中抓取像素的 Image 的 ImageProducer 調用。使用此類別檢索圖像像素的開發人員應該避免直接調用此方法,因為該調用操作可能導致檢索請求像素時出現問題。

指定者:
介面 ImageConsumer 中的 setProperties
參數:
props - 屬性列表

setColorModel

public void setColorModel(ColorModel model)
setColorModel 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。

註:此方法應該由要從中抓取像素的 Image 的 ImageProducer 調用。使用此類別檢索圖像像素的開發人員應該避免直接調用此方法,因為該調用操作可能導致檢索請求像素時出現問題。

指定者:
介面 ImageConsumer 中的 setColorModel
參數:
model - 指定的 ColorModel
另請參見:
getColorModel()

setPixels

public void setPixels(int srcX,
                      int srcY,
                      int srcW,
                      int srcH,
                      ColorModel model,
                      byte[] pixels,
                      int srcOff,
                      int srcScan)
setPixels 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。

註:此方法應該由要從中抓取像素的 Image 的 ImageProducer 調用。使用此類別檢索圖像像素的開發人員應該避免直接調用此方法,因為該調用操作可能導致檢索請求像素時出現問題。

指定者:
介面 ImageConsumer 中的 setPixels
參數:
srcX - 要設置的像素區域左上角的 X 坐標
srcY - 要設置的像素區域左上角的 Y 坐標
srcW - 像素區域的寬度
srcH - 像素區域的高度
model - 指定的 ColorModel
pixels - 像素陣列
srcOff - 像素陣列中的偏移量
srcScan - 像素陣列中一行像素到下一行的距離
另請參見:
getPixels()

setPixels

public void setPixels(int srcX,
                      int srcY,
                      int srcW,
                      int srcH,
                      ColorModel model,
                      int[] pixels,
                      int srcOff,
                      int srcScan)
setPixels 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。

註:此方法應該由要從中抓取像素的 Image 的 ImageProducer 調用。使用此類別檢索圖像像素的開發人員應該避免直接調用此方法,因為該調用操作可能導致檢索請求像素時出現問題。

指定者:
介面 ImageConsumer 中的 setPixels
參數:
srcX - 要設置的像素區域左上角的 X 坐標
srcY - 要設置的像素區域左上角的 Y 坐標
srcW - 像素區域的寬度
srcH - 像素區域的高度
model - 指定的 ColorModel
pixels - 像素陣列
srcOff - 像素陣列中的偏移量
srcScan - 像素陣列中一行像素到下一行的距離
另請參見:
getPixels()

imageComplete

public void imageComplete(int status)
imageComplete 方法是 ImageConsumer API 的一部分,此類別必需實作 ImageConsumer API 來檢索像素。

註:此方法應該由要從中抓取像素的 Image 的 ImageProducer 調用。使用此類別檢索圖像像素的開發人員應該避免直接調用此方法,因為該調用操作可能導致檢索請求像素時出現問題。

指定者:
介面 ImageConsumer 中的 imageComplete
參數:
status - 正在載入的圖像的狀態
另請參見:
ImageProducer.removeConsumer(java.awt.image.ImageConsumer)

status

public int status()
返回像素的狀態。返回表示可用像素資訊的 ImageObserver 標誌。此方法和 getStatus 具有相同的實作,但是優先使用 getStatus 方法,因為它遵循檢索資訊方法的命名約定,即 "getXXX" 的形式。

返回:
所有相關 ImageObserver 標誌的按位或
另請參見:
ImageObserver, getStatus()

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only