Java - 從影像中擷取像素陣列
處理影像時,經常需要存取其像素資料。本文探討了從 BufferedImage 中高效獲取二維像素值數組的技術。
利用 getRGB() 方法
一個常見的方法是使用 getRGB () 方法由 BufferedImage 提供。此方法將 alpha、紅色、綠色和藍色值組合成一個 int 並傳回它。雖然方便,但此方法可能效率較低,尤其是對於大影像,因為它涉及多個位元組操作和整數合併。
直接像素數組存取
另一種方法涉及利用 BufferedImage 的 getRaster() 和 getDataBuffer() 方法直接存取像素數組。這允許直接存取像素數據,從而提高大圖像的效能。該技術的缺點是需要手動索引計算來存取特定像素。
效能比較
為了說明效能差異,創建了一個效能測試類別使用這兩種方法。測試在 12,000 x 12,000 像素影像上進行。結果是驚人的:
convertTo2DUsingGetRGB:
convertTo2DWithoutUsingGetRGB:
結論
對於小圖像,getRGB()方法可能就足夠了。然而,對於大影像,直接存取像素陣列提供了顯著的效能優勢。選擇這種方法,您可以大幅減少處理時間並提高像素相關操作的效率。
以上是如何從 Java BufferedImage 中有效地檢索 2D 像素數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!