我想使用JAVA語言提取jpeg圖像的像素值,並且需要將其存儲在數組(bufferdArray)中以供進一步操作。那麼我如何從jpeg圖像格式中提取像素值?Java中的圖像處理
0
A
回答
0
獲得JPEG到Java可讀對象最簡單的方法如下:
BufferedImage image = ImageIO.read(new File("MyJPEG.jpg"));
的BufferedImage提供了用於在圖像中在精確的像素位置獲得的RGB值(XY整數座標)的方法,所以它如果你想知道你想如何將它存儲在一維數組中,那麼你就可以決定了,但這是它的要點。
1
看看BufferedImage.getRGB()。
這是一個精簡的指導示例,介紹如何拆分圖像以對像素執行條件檢查/修改。根據需要添加錯誤/異常處理。
public static BufferedImage exampleForSO(BufferedImage image) {
BufferedImage imageIn = image;
BufferedImage imageOut =
new BufferedImage(imageIn.getWidth(), imageIn.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
int width = imageIn.getWidth();
int height = imageIn.getHeight();
int[] imageInPixels = imageIn.getRGB(0, 0, width, height, null, 0, width);
int[] imageOutPixels = new int[imageInPixels.length];
for (int i = 0; i < imageInPixels.length; i++) {
int inR = (imageInPixels[i] & 0x00FF0000) >> 16;
int inG = (imageInPixels[i] & 0x0000FF00) >> 8;
int inB = (imageInPixels[i] & 0x000000FF) >> 0;
if ( conditionChecker_inRinGinB ){
// modify
} else {
// don't modify
}
}
imageOut.setRGB(0, 0, width, height, imageOutPixels, 0, width);
return imageOut;
}
0
有一種方法可以將緩衝圖像轉換爲整數數組,其中數組中的每個整數表示圖像中像素的rgb值。
int[] pixels = ((DataBufferInt)image.getRaster().grtDataBuffer()).getData();
有趣的是,當整數數組中的元素被編輯時,圖像中的相應像素也是如此。
爲了從一組x和y座標中找到數組中的像素,您可以使用此方法。
public void setPixel(int x, int y ,int rgb){
pixels[y * image.getWidth() + x] = rgb;
}
即使有乘法和加法的座標,它仍比BufferedImage類使用setRGB()方法更快。
編輯: 也請記住,圖片需要的類型需要是TYPE_INT_RGB,而不是默認情況下。它可以通過創建相同尺寸的新圖像以及TYPE_INT_RGB類型進行轉換。然後使用新圖像的圖形對象將原始圖像繪製到新圖像上。
public BufferedImage toIntRGB(BufferedImage image){
if(image.getType() == BufferedImage.TYPE_INT_RGB)
return image;
BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight, BufferedImage.TYPE_INT_RGB);
newImage.getGraphics().drawImage(image, 0, 0, null);
return newImage;
}
相關問題
- 1. Java中的圖像處理,如MATLAB圖像處理工具箱
- 2. Java圖像處理
- 3. Java圖像處理
- 4. java(圖像處理)
- 5. Java圖像處理
- 6. Java上的圖像處理
- 7. Android/Java中的圖像處理
- 8. java彩色圖像處理
- 9. Java高級圖像處理
- 10. 圖像處理即匹配java中的相似圖像
- 11. 尋找處理圖像的Java庫
- 12. 使用java的圖像處理
- 13. Java上的圖像處理過濾器
- 14. Java和Android之間的圖像處理
- 15. ImageView中的圖像處理
- 16. matlab中的圖像處理
- 17. Rails中的圖像處理
- 18. ruby中的圖像處理
- 19. C++中的圖像處理
- 20. PHP中的圖像處理
- 21. onPreviewFrame中的圖像處理
- 22. R中的圖像處理
- 23. Python中的圖像處理
- 24. CUDA中的圖像處理
- 25. C中的圖像處理#
- 26. C++中的圖像處理
- 27. Ios中的圖像處理
- 28. c中的圖像處理#
- 29. WPF中的圖像處理
- 30. 圖像處理
那麼簡單,沒人回答?首先嚐試一些你自己的努力。嘗試使用Google搜索ImageIO,BufferedImade.getRgb()... – 2012-04-04 22:00:57
[使用圖像教程](http://docs.oracle.com/javase/tutorial/2d/images/index.html) – Jeffrey 2012-04-04 22:01:23
可能的重複[如何轉換Java圖像轉換爲JPEG數組字節?](http://stackoverflow.com/questions/2568150/how-to-convert-java-image-into-jpeg-array-of-bytes) – 2012-04-04 22:03:10