3

Photoshop で作成されたいくつかの効果を、php/imagemagick で使用するコードに変換しようとしています。今のところ、Photoshop の RGB レベル機能を再現する方法に特に興味があります。私は Photoshop のインターフェースにあまり詳しくありませんが、これは私が与えられた情報です。

RGB Level Adjust
  Input levels: Shadow 0, Midtone 0.92, Highlight 255
  Output levels: Shadow 0, Highlight 255

入力レベルと出力レベルの正確さは? これを ImageMagick にどのように変換しますか? 以下に、私が試したことを示しますが、目的の効果が正しくレンダリングされません (Photoshop の 0-255 スケールを 0-65535 に変換):

$im->levelImage(0, 0.92, 65535);
$im->levelImage(0, 1, 65535);

パラメータ名が一列に並んでおらず、出力レベルのパラメータの数も一致していないため、これはほとんど暗闇の中での刺し傷でした。基本的に、Photoshop が調整を適用するときに何が起こっているのか正確にはわかりません。それが今の私の最大のハードルだと思います。それを取得したら、ImageMagick で対応する効果を見つける必要があります。

Photoshop で何が起こっているのか、そして ImageMagick でそれを再現する方法について誰かが光を当てることができますか?

4

3 に答える 3

3

だから私はこのウェブサイトに出くわしました: http://www.fmwconcepts.com/imagemagick/levels/index.php

そこにある情報に基づいて、次の php を考え出すことができました。これは、Photoshop が入力と出力で行うことなどをシミュレートするのに非常に効果的であると思われます。

function levels($im, $inshadow, $midtone, $inhighlight, $outshadow, $outhighlight, $channel = self::CHANNEL_ALL) {
    $im->levelImage($inshadow, $midtone, $inhighlight, $channel);
    $im->levelImage(-$outshadow, 1.0, 255 + (255 - $outhighlight), $channel);
}

これは、ブラックポイントとホワイトポイントの levelImage へのパラメータが 0 ~ 255 のスケールにあることを前提としています。システムでは、実際には 0 ~ 65535 である可能性があります。それができれば、調整するのは簡単です。$im->getQuantumRange() を使用して、セットアップで使用する値を確認することもできます。文字列バージョンと長いバージョンのクォンタムを含む配列を返します。そこから、値を正規化するか、新しい範囲を使用するのは簡単です。

于 2012-05-23T20:41:12.450 に答える
3

シャドウ、ミッドトーン、ハイライトは、特定の明るさの範囲内に収まる色です。たとえば、シャドウは明度ヒストグラムの低い範囲であり、中間調は中間の色であり、ハイライトは高い範囲です。ただし、これらの値にハード リミットを使用することはできません。そのため、ヒストグラムに重みを付けるこのような曲線を使用する必要があります (ピクセルが同時に複数の範囲に存在する可能性があります)。

シャドウ、ミッドトーン、ハイライト

シャドウ、ミッドトーン、およびハイライトを個別に調整するには、現在のシャドウ、ミッドトーン、およびハイライトの値を使用してピクセルごとに加重合計を作成し、結果の値を作成する必要があります。

ImageMagick API を使用して直接これを行うことはできないと思います。おそらく、単純にフィルターとして記述することができます。

お役に立てれば。

于 2012-05-22T20:37:57.427 に答える
1

ドキュメントを参照してください。最初の値は黒点 (シャドウ) の入力値、中央はガンマ (Photoshop の中間点と同じだと思います)、最後の値は白点 (ハイライト) の入力値です。

出力値はイメージ タイプのクォンタム値に固定されているため、指定する必要はありません。

于 2012-05-22T18:31:33.010 に答える