我已經寫了複製像素數據轉換整數數組這樣的圖像處理代碼:Raster.getPixels()返回的像素分量的順序是什麼?
void processImage(BufferedImage source) {
WritableRaster raster = source.getRaster();
int numBands = raster.getNumBands();
int height = raster.getHeight();
int width = raster.getWidth();
int[] pixelRow = new int[width * numBands];
for (int i = 0; i < height; i++) {
raster.getPixels(raster.getMinX(), raster.getMinY() + i, width, 1, pixelRow);
// do some processing
}
// create a new image
return newImage;
}
的代碼可與到目前爲止我測試的圖像。 pixelRow
陣列對於帶有3個波段(無alpha通道)的圖像,以及對於帶有4個波段(帶有alpha通道)的圖像,紅,綠,藍和Alpha的順序似乎總是以紅,綠和藍的順序接收像素分量。
但是,我找不到任何描述說明這一點。是否保證我會一直按照這個順序獲取像素組件?有沒有描述這個的規範?
非常感謝您的回答。這看起來非常好。對於CMYK JPEG圖像,我在調用getPixels()的圖像處理代碼之前將顏色空間轉換爲RGB。這完全適合。 – Codo