使用magick ++创建暗淡的图标(ImageMagick)

时间:2011-01-14 08:47:10

标签: c++ icons imagemagick magick++

我正在尝试将ImageMagick用于我认为简单的任务。 我想在运行时在应用程序中生成图像/图标的暗淡版本。 我使用magick ++ c plus api。

我从命令行运行时发现一些命令可以给我一个正常的结果。 将命令转换为c ++ api有点挑战性,结果不如预期。

// Command example
convert -size 32x32 xc:"#999999" gray32.png
composite -dissolve 50% logo32.png gray32.png dim_logo32.png

这在c ++中看起来如何? 我想出了这个。

Magick::Image gray;
gray.size( Magick::Geometry(image.columns(), image.rows()));
gray.read( "xc:#999999");
gray.label( "gray" );

if(gray.isValid()) {
gray.opacity(QuantumRange/2);
image.composite(gray, Magick::Geometry(image.columns(),image.rows()), Magick::DissolveCompositeOp );

但是图片的透明度已经丢失了。

制作暗灰色图像的另一个建议是使整个图像半透明。

convert input.png -channel Alpha -evaluate Set 50% output.png

这可行。当我从命令行尝试此操作时,保持透明度。 将此更改为c ++ api让我很困惑。

我最终得到了这一行。

image.opacity(QuantumRange/ 2);

现在这个结果让我感到困惑。图像是半透明的,但最初透明的背景现在是洋红色。

我不允许发布图片,以显示结果。 :(

0 个答案:

没有答案