Pergunta

Como eu converteria os pixels em uma imagem (arquivo .png) em uma matriz inteira, onde cada pixel é convertido em seu equivalente inteiro argb? A propósito, não é uma matriz inteira 2D, um 1D (onde o acesso é através da matriz [linha*largura+col]).

Obrigado.

Foi útil?

Solução

Depois de ler os dados da imagem em algum buffer, o elenco comum deve fazer o truque:

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

O exemplo usa a biblioteca GDKPixBuf, mas outras bibliotecas devem ser semelhantes.

Outras dicas

A menos que você esteja fazendo isso por interesse e aprendizado, eu recomendaria que você use uma biblioteca de terceiros, por exemplo Imagemagick.
Isso economizará seu tempo (e evita bugs)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top