У lodash есть isPlainObject , что может быть тем, что ищут многие, кто заходит на эту страницу. Возвращает ложь, когда дает функцию или массив.
Предполагая, что вы знаете высоту и ширину изображения.
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 * ширина * высота (что должно быть допустимым).
Существует вариант 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 .