1

私は現在、PHP と Javascript を使用して AJAX アプリケーションを開発しています。これにより、人々は箔に印刷される画像をアップロードできます。標準の CMYK プリンターを使用するので、白い部分は印刷されず、空白のままになります。これは通常、白い紙では違いがありませんが、印刷しているため、ここでは違いがあります。ホイルで。グレーのドットが半透明の黒になることを考えると、さらに複雑になります。色についてはまだ話していません。

それでも、印刷プロセスをシミュレートするアルファ チャネルを使用して PNG ファイルを作成したいと考えています。これにより、印刷された箔がさまざまな背景に対して保持されたときにどのように見えるかをプレビューできます。

これで、減法混色モデルと加法混色モデル、および RGBA と CMYK の基本理論を理解できましたが、これも基本にすぎず、ここではどう進めればよいか途方に暮れています。理論的には、すべてのピクセルを CMYK に変換し、各チャネルを白からカラーではなく透明からカラーへのスケールとして解釈すると思いますが、それを RGBA に戻すにはどうすればよいでしょうか?

もちろん、最も素晴らしいのは、ImageMagick がそのような機能を提供する場合です....そうですか、それとも手動でピクセルをループする必要がありますか? 後者の場合、どのように計算しますか?

これが以前に問題になっていたかどうかはわかりません。Stackoverflow でも Google でも何も見つかりませんでしたが、適切なキーワードを見逃しただけかもしれません。これ以上の読書、思考の糧、または「私たちはこれについて何百万回も議論しました、ばか!」というメモ付きのハイパーリンク。熱烈に歓迎します。

ありがとう

4

1 に答える 1

2

基本的に必要なのは、アップロードされた画像にアルファ チャネルを追加し、PNG ファイルを作成することです。

アルファ チャネルは、印刷される色の不透明度を表す必要があります。それを生成するには、いくつかのオプションがあります。

  1. 画像のコピーを取り、グレースケールに変換し、反転してアルファ チャネルとして使用します。

  2. アルファ チャネルを作成し、元の画像から派生した各ピクセルのアルファ値を次のように計算します: alpha = 1.0 - min(red, green, blue) (整数または浮動小数点数のどちらを使用しているかに応じて、1.0 の代わりに 255 を使用します)。

  3. 元の画像を CMYK に変換し (カラー プロファイルを使用し、インターネット全体で見られる貧弱な式ではありません)、元の RGB 画像のアルファ チャネルを作成するための基礎として使用します: alpha = max(cyan, magenta, yellow,黒)

  4. 次のような各ピクセルの透明度を計算するためのさらに優れた式を考え出してください。

最後の 1 つは、各色の相対的な不透明度の推測にすぎません。必ず改善できます。

于 2013-06-04T11:15:04.443 に答える