C++ 如何判断Magick::Image是否有alpha通道?
如果我使用读取函数将图像加载到ImageMagick中,如下所示:C++ 如何判断Magick::Image是否有alpha通道?,c++,imagemagick,C++,Imagemagick,如果我使用读取函数将图像加载到ImageMagick中,如下所示: Magick::Image image; image.read(filename); 如何判断加载的图像是否具有alpha通道?当我用透明的方式操纵PNG的像素时,与加载不透明的JPG时,我想将我的程序引导到不同的算法 我能做一个简单的是/否测试吗? 我之所以问这个问题,是因为下面这样的代码片段似乎会在加载的图像中没有随机不透明度的情况下指定它们,而不是假设像素是完全不透明的: // transform the pixel
Magick::Image image;
image.read(filename);
如何判断加载的图像是否具有alpha通道?当我用透明的方式操纵PNG的像素时,与加载不透明的JPG时,我想将我的程序引导到不同的算法
我能做一个简单的是/否测试吗?
我之所以问这个问题,是因为下面这样的代码片段似乎会在加载的图像中没有随机不透明度的情况下指定它们,而不是假设像素是完全不透明的:
// transform the pixels to something GL can use
Magick::Pixels view(image);
GLubyte *pixels = (GLubyte*)malloc( sizeof(GLubyte)*width*height*4 );
for ( ssize_t row=0; row<height; row++ ) {
const Magick::PixelPacket *im_pixels = view.getConst(0,row,width,1);
for ( ssize_t col=0; col<width; col++ ) {
*(pixels+(row*width+col)*4+0) = (GLubyte)im_pixels[col].red;
*(pixels+(row*width+col)*4+1) = (GLubyte)im_pixels[col].green;
*(pixels+(row*width+col)*4+2) = (GLubyte)im_pixels[col].blue;
*(pixels+(row*width+col)*4+3) = 255-(GLubyte)im_pixels[col].opacity;
}
}
*pTex = pContext->LoadTexture( pixels, width, height );
free(pixels);
//将像素转换为GL可以使用的东西
Magick::像素视图(图像);
GLubyte*像素=(GLubyte*)malloc(sizeof(GLubyte)*宽度*高度*4);
对于(ssize_t row=0;row),可以使用matte()属性确定图像是否支持透明度
Magick::Image image;
image.read(filename);
if (image.matte())
executeMethod(image);