Создать CImg <uint8_t> из байтового массива? - PullRequest
3 голосов
/ 13 октября 2011

Я пытаюсь изменить библиотеку C ++, в которой есть функция, которая создает экземпляр CImg из файла изображения, чтобы использовать вместо него байтовый массив. Это возможно? Я нашел один метод, который, кажется, позволяет это ...

CImg  ( const t *const  values,  
  const unsigned int  size_x,  
  const unsigned int  size_y = 1,  
  const unsigned int  size_z = 1,  
  const unsigned int  size_c = 1,  
  const bool  is_shared = false  
) 

... но поскольку у меня есть только байтовый массив, у меня нет размеров исходного изображения.

ОБНОВЛЕНО ДЛЯ АДРЕСА КОММЕНТАРИЙ Это попытка внести изменения в библиотеку pHash, которая использует класс CImg, как определено здесь http://cimg.sourceforge.net/reference/structcimg__library_1_1CImg.html

Массив байтов заполняется через запрос http для исходного изображения.

1 Ответ

2 голосов
/ 13 октября 2011

Если ваш байтовый массив содержит копию всего файла изображения (а не только части растрового изображения), то вы можете прочитать размеры из заголовка.

См. BITMAPFILEHEADER и BITMAPINFOHEADER (конечно, для других форматов, таких как PNG или JPEG, вам понадобятся соответствующие заголовки).

Например, это позволит вам просматривать изображение из сети или сегмента ресурсов вашего приложения без предварительной записи его на диск.

...