Как преобразовать массив байтов в Изображение в Java SE

У lodash есть isPlainObject , что может быть тем, что ищут многие, кто заходит на эту страницу. Возвращает ложь, когда дает функцию или массив.

5
задан Ma99uS 17 July 2009 в 13:33
поделиться

2 ответа

Предполагая, что вы знаете высоту и ширину изображения.

BufferedImage img=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for(int r=0; r<height; r++)
for(int c=0; c<width; c++)
{
  int index=r*width+c;
  int red=colors[index] & 0xFF;
  int green=colors[index+1] & 0xFF;
  int blue=colors[index+2] & 0xFF;
  int rgb = (red << 16) | (green << 8) | blue;
  img.setRGB(c, r, rgb);
}

Примерно. Это предполагает, что данные пикселей закодированы как набор строк; и что длина цветов составляет 3 * ширина * высота (что должно быть допустимым).

6
ответ дан 18 December 2019 в 09:09
поделиться

Существует вариант setRGB, который принимает массив значений RGBA типа int:

BufferedImage img=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
int[] raw = new int[data.length * 4 / 3];
for (int i = 0; i < data.length / 3; i++) {
    raw[i] = 0xFF000000 | 
        ((data[3 * i + 0] & 0xFF) << 16) |
        ((data[3 * i + 1] & 0xFF) << 8) |
        ((data[3 * i + 2] & 0xFF));
}
img.setRGB(0, 0, width, height, raw, 0, width);

Характеристики производительности аналогичны решению CoderTao .

1
ответ дан 18 December 2019 в 09:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: