我正嘗試一個圖像轉換成一個矩陣,並將其轉換回來,但2張圖片是不同的: 它轉換成一個矩陣:的Java的BufferedImage setRgb的getRGB,2個不同的結果
public int[][] getMatrixOfImage(BufferedImage bufferedImage) {
int width = bufferedImage.getWidth(null);
int height = bufferedImage.getHeight(null);
int[][] pixels = new int[width][height];
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
pixels[i][j] = bufferedImage.getRGB(i, j);
}
}
return pixels;
}
和轉換它放回一個BufferedImage:
public BufferedImage matrixToBufferedImage(int[][] matrix) {
int width=matrix[0].length;
int height=matrix.length;
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
int pixel=matrix[i][j] <<24|matrix[i][j] <<16|matrix[i][j]<<8|matrix[i][j] ;
bufferedImage.setRGB(i, j, pixel);
}
}
return bufferedImage;
}
這個結果:
http://img59.imageshack.us/img59/5464/mt8a.png
謝謝!
出於性能原因(每次調用都會導致昂貴的色彩空間計算),您應該避免使用getRGB/setRGB,可以通過BufferedImage的Raster訪問圖像後面的數組。 – lbalazscs