如何從圖像中提取像素數組
在Java 中,從BufferedImage 獲取像素資料作為int[][] 數組可以實現直接存取特定像素。以下是幾個實現此目的的方法:
使用BufferedImage 的getRGB() 方法
此方法將alpha、red、green 和blue 值組合到一個int中,並且返回它。要提取各個顏色分量,您需要檢索顏色遮罩並相應地移動值。這種方法相對簡單,但不是最有效的。
直接存取像素數組
透過使用以下程式碼,您可以直接以位元組形式存取像素數組array:
byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
此方法明顯比getRGB()方法快,特別是對於大型數組
性能比較
為了演示性能差異,使用 12,000 x 12,000 像素圖像進行了測試。下表比較了兩種方法的執行時間:
Method | Average Time |
---|---|
getRGB() | 16 seconds |
Direct Access | 1.5 seconds |
結論
直接使用 DataBufferByte 類別存取像素數組是高效像素的建議方法操縱。與 getRGB() 方法相比,它提供了顯著的效能優勢,特別是在處理大影像時。
以上是如何在 Java 中有效地從 BufferedImage 中提取像素資料作為數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!