使用ImageMagic库将图像转换为像素图

时间:2011-11-30 20:34:50

标签: c++ opengl imagemagick texture-mapping

我的任务是将“图像读入pixmaps然后转换为纹理贴图”。因此,对于pixmap部分,请听我说,如果我有正确的想法,并告诉我是否有一个更简单的方法。我正在使用的图书馆文档:http://www.imagemagick.org/Magick++/Documentation.html

读入图片:

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

我认为这是我需要将'image'读入的pixmap:

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

所以我认为我需要一个循环,对于每个'pixmap'像素索引,从相应的'图像'像素索引分配R,G,B值。我在想循环体是这样的:

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的Quantums,所以有人可以在这里提供帮助吗?

- 或 -

也许我可以通过使用OpenIL来处理像素图和纹理贴图(这里的文档:http://openil.sourceforge.net/tuts/tut_10/index.htm)。我想我可以简单地按顺序调用它们吗?

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

1 个答案:

答案 0 :(得分:1)

您可以将pixelColor(x,y)返回的量子值复制到ColorRGB,您将获得标准化(0.0,1.0)颜色值。

如果你不必坚持使用Magick ++,你可以试试OpenIL,它可以加载你的图像并将其转换为OpenGL纹理贴图而不会有太多麻烦。