パフォーマンス上の理由から(php経由での実行は時々信じられないほど遅い)私はほとんどのimagemagickコマンドをphpのimagickに変換しています。
ここで-channelと-levelに関するドキュメントを読みました:http: //www.imagemagick.org/script/command-line-options.php#channel と http://www.imagemagick.org/script/command-line- options.php#level
特に黒、白、ガンマ値に関して:
カンマで区切られた1つ、2つ、または3つの値が与えられた場合:黒点、白点、ガンマ(例:10,250,1.0または2%、98%、0.5)。黒と白のポイントの範囲は0からQuantumRange、または0から100%です。白色点を省略すると、中心のコントラストが変化するように(QuantumRange --black_point)に設定されます。文字列のどこかに%記号が存在する場合、黒と白の両方のポイントがフルカラー範囲のパーセンテージになります。ガンマは値のガンマ調整を行います。省略した場合、デフォルトの1.0(ガンマ補正なし)が想定されます。
通常の使用法(-level)では、元の画像の指定された「black_point」値がゼロ(または黒)に設定され、指定された「white_point」値がQuantumRange(または白)に設定されるように画像値が引き伸ばされます。これにより、画像のコントラストを直接調整できます。結果の画像の「ガンマ」が調整されます。
これに基づいて私は変更しようとしました
convert a.jpg -channel R -level 33% -channel G -level 33% b.jpg
に
$quantumRange = $image->getQuantumRange();
//get the 33%
$blackPoint = $quantumRange ['quantumRangeLong']/100*33;
//to get the middle ground between black and white - also tried with $quantumRange['quantumRangeLong']
$whitePoint = $quantumRange ['quantumRangeLong'] - $blackPoint;
$gamma = 1;
$image->levelImage ( $blackPoint , $gamma , $whitePoint , Imagick::CHANNEL_RED);
$image->levelImage ( $blackPoint , $gamma , $whitePoint , Imagick::CHANNEL_GREEN);
しかし、結果はかなり異なって見えます... imagickがそのチャネルレベルをどのように実行するかを指摘できる専門家はいますか?