2010-04-17 2 views
1

Как мне преобразовать пиксели в изображение (файл .png) в целочисленный массив, где каждый пиксель преобразуется в его эквивалент ARGB? Не двумерный целочисленный массив, кстати, 1D (где доступ осуществляется через массив [row * width + col]).C++ Преобразование изображения в целочисленный массив

Спасибо.

+5

Если вы _really_ хотите сделать это без сторонних библиотек, вам захочется стать хорошими друзьями в спецификации PNG: http://www.w3.org/TR/PNG/. Прочитав это (и связанные с ним материалы), это всего лишь небольшой вопрос программирования. –

+0

Советую вам не приближаться к психиатрическим клиникам, иначе вы застрянете. – jweyrich

+0

@jweyrich, что ты имеешь в виду? @ Джеймс, спасибо, я проверю это. – jonathanasdf

ответ

1

После прочтения данных изображения в какой-то буфер, обычный бросок должен сделать трюк:

GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file ("image.png", NULL); 
unsigned char *pixels = gdk_pixbuf_get_pixels (pixbuf); 
int *array = reinterpret_cast<int*>(pixels); 

Пример использует библиотеку GdkPixbuf, но и другие библиотеки должны быть аналогичный.

0

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

+0

Проходит время, и теперь для ImageMagick существует несколько API. C++ - это [Magick ++] (http://www.imagemagick.org/Magick++/). – Hastur

Смежные вопросы