2015-04-09 6 views
1

Если вы можете просмотреть байты png-файла, как вы можете получить информацию о цвете. Откуда вы знаете, какие байты красные, синие или зеленые. Есть ли способ извлечь информацию о цвете при просмотре байтов png-файла?Захват информации о клубе из файла PNG

Каким будет процесс выделения цветов пикселей с использованием C++ или Java?

+0

1. № машины * изображение * часть исходного PNG съела сжимаются, и «просмотр байт файла PNG» покажет сжатые данные. 2. Рекомендации библиотек являются субъективными и подвержены изменениям. – usr2564301

ответ

1

в Java вы можете сделать что-то вроде этого

public static Color[][] byteArrayToColors(byte[] bytes){ 
     BufferedImage paintImage=null; 
     try { 
      InputStream inputStream = new ByteArrayInputStream(bytes); 
      paintImage = ImageIO.read(inputStream); 
     } catch (IOException ex) { 
      System.out.println(ex.getMessage()); 
     } 
     Color[][] cols = new Color[paintImage.getWidth()][paintImage.getHeight()]; 
    for(int z = 0;z < paintImage.getWidth();z++){ 
     for(int a = 0;a < paintImage.getHeight();a++){ 
      int color = paintImage.getRGB(z, a); 

      int red = (color & 0x00ff0000) >> 16; 
      int green = (color & 0x0000ff00) >> 8; 
      int blue = color & 0x000000ff; 
      int alpha = (color>>24) & 0xff; 
      Color col = new Color(red,green,blue,alpha); 
      cols[z][a] = col; 

     } 
    } 
return cols; 
} 
Смежные вопросы