使用ImageMagick展平PNG图像

使用ImageMagick展平PNG图像,imagemagick,magick++,Imagemagick,Magick++,使用shell命令,我可以对具有透明度的PNG文件执行以下操作: convert image.png -background Black -flatten image.png 现在生成的图像具有黑色背景。如何使用Magick++API实现这一点?我有一个图像对象,我已经在使用它进行其他操作: Image img(filename); img.resize(Magick::Geometry("x48")); img.unsharpmask(5.0, 0.5, 50.0, 50.0); img.g

使用shell命令,我可以对具有透明度的PNG文件执行以下操作:

convert image.png -background Black -flatten image.png
现在生成的图像具有黑色背景。如何使用Magick++API实现这一点?我有一个图像对象,我已经在使用它进行其他操作:

Image img(filename);
img.resize(Magick::Geometry("x48"));
img.unsharpmask(5.0, 0.5, 50.0, 50.0);
img.gamma(0.5);
...
在调整大小之前,我需要注意图像的透明度,并将其改为黑色


谢谢。

可以在STL.h中找到-flatten选项,称为flatteimages。此方法需要一个图像容器。下面是如何使用该方法的示例

图像img(文件名);
几何体大小(img.columns(),img.rows());
颜色(0,0,0);
图像黑色(大小、颜色);
列表图像;
图像。推回(黑色);
图像。推回(img);
图像平坦化;
展平图像(展平图像,images.begin(),images.end());
展平图像。调整大小(几何体(“x48”);

Wow,我没想到它会如此精致,但它的工作原理与预期相符。谢谢我本来打算发帖子说它仍然不起作用,但后来我意识到,在我自己的超级天才之笔下,我在读PNG,执行更改,然后写一个临时文件来验证。。。作为一个JPG!一些图像被这样的方式弄得乱七八糟。一旦我意识到我的错误,一切都正常!现在我需要编写一个case开关,使其忽略JPEG文件,只处理PNG、GIF和TIFF文件。再次感谢!