Преобразование изображения в растровое изображение с использованием библиотек ImageMagic - PullRequest
0 голосов
/ 01 декабря 2011

Мое задание - получить «изображения, читаемые в растровые изображения, которые вы затем преобразуете в карты текстур». Так что только для растровых изображений, выслушайте меня и скажите, есть ли у меня правильная идея и есть ли более простой способ. Библиотека документов, которые я использую: http://www.imagemagick.org/Magick++/Documentation.html

Читайте на картинке:

Image myimage;
myimage.read( "myimage.gif" );

Я думаю, что это то растровое изображение, в которое мне нужно прочитать 'изображение':

GLubyte pixmap[TextureSize][TextureSize][3];

Так что я думаю, что мне нужен цикл, который для каждого пиксельного индекса 'pixmap' присваивает значения R, G, B из соответствующих индексов пикселей 'image'. Я думаю, что тело цикла выглядит так:

pixmap[i][j][0] = myimage.pixelColor(i,j).redQuantum(void);
pixmap[i][j][1] = myimage.pixelColor(i,j).greenQuantum(void);
pixmap[i][j][2] = myimage.pixelColor(i,j).blueQuantum(void);

Но я думаю, что вышеупомянутые функции возвращают Кванты, где мне нужны GLubytes, поэтому кто-нибудь может предложить здесь помощь?

- ИЛИ -

Возможно, я смогу позаботиться и о растровом изображении, и о текстурной карте, используя OpenIL (документы здесь: http://openil.sourceforge.net/tuts/tut_10/index.htm). Думаете, я мог бы просто вызвать их по очереди?

ilutOglLoadImage(char *FileName);
ilutOglBindTexImage(ILvoid);

1 Ответ

1 голос
/ 01 декабря 2011

Вы можете скопировать квантовые значения, возвращаемые pixelColor(x,y), в ColorRGB, и вы получите нормализованные (0.0,1.0) цветовые значения.

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

...