Как мне создать BufferedImage из массива, содержащего пиксели? - PullRequest
2 голосов
/ 22 февраля 2012

Я получаю пиксели от BufferedImage, используя метод getRGB().Пиксели хранятся в массиве с именем data[].После некоторых манипуляций с массивом данных мне нужно снова создать BufferedImage, чтобы я мог передать его модулю, который будет отображать измененное изображение из этого массива данных, но я застрял с ним.

Ответы [ 3 ]

21 голосов
/ 22 февраля 2012

Я получаю пиксели из BufferedImage, используя метод getRGB (). пиксели хранятся в массиве, называемом data [].

Обратите внимание, что это может быть очень медленно. Если ваш BufferedImage поддерживает его, вы можете вместо этого получить доступ к базовому int [] и напрямую скопировать / прочитать пиксели оттуда.

Например, чтобы быстро скопировать ваши данные [] в базовый int [] нового BufferedImage:

BufferedImage bi = new BufferedImage( w, h, BufferedImage.TYPE_INT_ARGB );
final int[] a = ( (DataBufferInt) res.getRaster().getDataBuffer() ).getData();
System.arraycopy(data, 0, a, 0, data.length);

Конечно, вы хотите убедиться, что ваши данные [] содержат пиксели в том же представлении, что и ваш BufferedImage (в данном примере ARGB).

2 голосов
/ 22 февраля 2012
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Затем установите пиксели снова.

bufferedImage.setRGB(x, y, your_value);

PS: как указано в комментариях, пожалуйста, используйте ответ от @ TacticalCoder

0 голосов
/ 22 февраля 2012

Вы можете установить значения RGB (int) для пикселей в новом изображении, используя методы setRGB.

...