我正在尝试使用ImageMagick删除透明度。以下命令适用于大多数图像,但并非全部。在少数情况下会弄乱图像。 “-删除alpha”解决了问题,但我不知道如何在Magick ++代码中做到这一点。我正在使用以下命令,该命令无法处理少量图像。随附一个样本。
命令:convert -flatten -background white a.png a-removeTransparency.jpg
答案 0 :(得分:1)
magick++中的示例看起来像...
#include <Magick++.h>
#include <vector>
int main(int argc, const char * argv[]) {
std::vector<Magick::Image> images;
Magick::Image input, output;
// Create example image
input.size(Magick::Geometry(100, 100));
input.read("GRADIENT:GREEN-TRANSPARENT");
// Set background color
input.backgroundColor(Magick::Color("RED"));
// Add image to list
images.push_back(input);
// Perform flatten operation
Magick::flattenImages(&output, images.begin(), images.end());
// Safe to disk
output.write("output.png");
return 0;
}
这将转换图像为...
到
要理解的关键是Magick ++具有 Standard Template Libary 和许多辅助方法,并且大多数方法都希望图像列表(Magick::Image
类上找不到所需的内容,则STL可能已经结束。
答案 1 :(得分:0)
Imagemagick中正确的命令是将-background这样的设置放在-flatten这样的运算符之前。更重要的是,请先阅读输入内容。这在IM 7中更为重要。IM6更宽容。所以尝试
convert a.png -background white -flatten removeTransparency.jpg