私は簡単な作業だと信じていたことに 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 );
しかし、写真の透明度は失われます。
薄暗い画像を作成するためのもう 1 つの提案は、画像全体を半透明にすることです。
convert input.png -channel Alpha -evaluate Set 50% output.png
これはうまくいくかもしれません。コマンドラインからこれを試したとき、透明度は保たれます。これを c++ api に変更すると、かなり混乱しました。
この一行で終わりました。
image.opacity(QuantumRange/ 2);
今、これからの結果は私を混乱させます。画像は半透明ですが、元々透明だった背景がマゼンタになりました。
結果を示すために画像を投稿することは許可されていませんでした。:(