2013-09-24 3 views
1

У меня есть массив целых чисел 2D, который я получаю из метода BufferedImage «getRGB()». , когда я пытаюсь преобразовать массив целых чисел 2D в BufferdImage, я получаю только черное изображение.java как преобразовать int [] [] в BufferedImage

Этот метод

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
    for (int i = 0; i < matrix.length; i++) { 
     for (int j = 0; j < matrix[0].length; j++) { 
      int pixel=matrix[i][j]; 
      System.out.println("The pixel in Matrix: "+pixel); 
      bufferedImage.setRGB(i, j, pixel); 
      System.out.println("The pixel in BufferedImage: "+bufferedImage.getRGB(i, j)); 
     } 
    } 

дать этот выход:

The pixel in Matrix: 0 
The pixel in BufferedImage: -16777216 
The pixel in Matrix: 721420288 
The pixel in BufferedImage: -16777216 
The pixel in Matrix: 738197504 
The pixel in BufferedImage: -16777216 
The pixel in Matrix: 520093696 
The pixel in BufferedImage: -16777216 
The pixel in Matrix: 503316480 
The pixel in BufferedImage: -16777216 

почему каждый пиксель "-16777216"?

Спасибо!

UPDATE

метод, который возвращает целочисленная матрица

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; 
} 
+0

Поможет ли это ?? http://stackoverflow.com/questions/5436931/convert-a-2d-array-of-int-ranging-from-0-256-into-a-grayscale-png –

+0

нет, тот же результат –

+0

Формат вашего значения матрицы неверны. Где ты достал их? Можете ли вы показать код? – Dukeling

ответ

3

Все ваши пиксели, кажется, быть черного цвета с различными значениями альфа. Вы должны использовать TYPE_INT_ARGB, чтобы не потерять альфа-канал.

+0

Это было решение :) –

0

Если вы используете TYPE_INT_RGB, вы можете сделать это следующим образом:

BufferedImage.getRaster().setPixels(xCord, YCord, Width, Height, IntArray); 
Смежные вопросы