0 レビュー
1 回答
php-compositeImageを使用して、図面のピクセルの不透明度を設定します
次のことは可能ですか:
2つの画像があります。1つは、背景が透明なキャンバスからの描画です。もう1つは、各ピクセルが白または黒のグレースケール描画です。
元の図面のピクセルを、2番目の画像に黒いピクセルが存在する完全な不透明度に設定する方法を見つけたいと思います。
入力図面と、取り出したいものを提供します。出力は私が作成します。代わりに、 compositeImage
または他のImagick呼び出しを使用して目標を達成したいと思います。
繰り返しになりますが、これらはすべて.png形式ですが、入力と出力には不透明度があり、中央はグレースケールです。
わからない
0
レビュー
答え :
解決策:
必要な手法は、2つのアルファチャネルを合成し、その結果を元の画像の新しいアルファチャネルとしてコピーすることだと思います。例...
$drawing = new Imagick('drawing.png');
$mask = new Imagick('mask.png');
// Extract original alpha channel from drawing.
$base_opacity = clone $drawing;
$base_opacity->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT);
// Composite both alpha channels
$base_opacity->compositeImage($mask, Imagick::COMPOSITE_MULTIPLY, 0 ,0);
// Copy new `base_opacity` as alpha channel
$drawing->compositeImage($base_opacity, Imagick::COMPOSITE_COPYOPACITY, 0 ,0);
これが上の行の段階的なプレビューです。
// Extract original alpha channel from drawing.
$base_opacity = clone $drawing;
$base_opacity->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT);
// Composite both alpha channels
$base_opacity->compositeImage($mask, Imagick::COMPOSITE_MULTIPLY, 0 ,0);
// Copy new `base_opacity` as alpha channel
$drawing->compositeImage($base_opacity, Imagick::COMPOSITE_COPYOPACITY, 0 ,0);
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。