我想將圖像轉換爲二維像素數組,然後對其執行一些操作,然後將生成的二維數組轉換回圖像。但我總是得到一個純粹的黑色圖像。我無法弄清楚我錯在哪裏。這就是我所做的。所有的操作都需要在8位灰度圖像上完成。將圖像轉換爲二維數組,然後將圖像返回到Java
首先我得到二維像素數組。
public int[][] compute(File file) { try { BufferedImage img= ImageIO.read(file); Raster raster=img.getData(); int w=raster.getWidth(),h=raster.getHeight(); int pixels[][]=new int[w][h]; for (int x=0;x<w;x++) { for(int y=0;y<h;y++) { pixels[x][y]=raster.getSample(x,y,0); } } return pixels; } catch (Exception e) { e.printStackTrace(); } return null; }
然後我做了一些操作的像素陣列
下一頁上我的數組轉換回圖像。
public java.awt.Image getImage(int pixels[][]) { int w=pixels.length; int h=pixels[0].length; BufferedImage image=new BufferedImage(w,h,BufferedImage.TYPE_BYTE_GRAY); WritableRaster raster=(WritableRaster)image.getData(); for(int i=0;i<w;i++) { for(int j=0;j<h;j++) { raster.setSample(i,j,0,pixels[i][j]); } } File output=new File("check.jpg"); try { ImageIO.write(image,"jpg",output); } catch (Exception e) { e.printStackTrace(); } return image; }
但我得到一個完整的黑色圖像,我相信,這是不完全的黑色。我應該怎麼做才能獲得正確的結果?
EDIT - 施加efan的溶液後,當我的圖像保存到文件中,假設的(0,0)是68的像素值,然後從它有時會發生變化,以70有時相同的文件計算所述像素值到71 ..每個像素都有很小的失真,但是它損壞了整個圖像。有沒有修復?
@丹:錯誤類型..現在糾正。 – 2013-02-21 16:06:14