5

次のスクリプトを使用して画像をフォルダに保存していますが、「エラーが含まれているため、画像を表示できません」というメッセージが表示される画像が1つあります。

問題は画像上のcmykとrgbと呼ばれるものだと思いますが、Webで検索するときに、phpを使用してcmykをrgbに変換する方法の例が見つかりません。

例の1つを次に示します:http://offshootinc.com/blog/2008/10/24/using-the-imagick-class-to-convert-a-cmyk-jpeg-to-rgb/しかし、私は理解していません私の場合、それをどのように使用するか。

画像のリンクは次のようなものです:www.example.com/attachment?id=2290

スクリプトは次のとおりです。

<?php 
$image = 'http://www.dealrush.ie/attachment?id=2290';
$name = 'somename';
$alt = 'somealt';
$saveimage = file_get_contents($image);
file_put_contents("/usr/local/pem/vhosts/155030/webspace/httpdocs/img/$name.jpg", $saveimage);?>

後でいくつかのページで、このようなものを使用して画像を表示します。<img src = "http://www.example.com/img/ <?php echo $name?>.jpg" alt = " <?php echo $alt?>" height = "127px" width = "190px" />

これらの画像の変換にご協力いただければ幸いです。ありがとうダニエル

4

2 に答える 2

5

色空間 (CMYK または RGB) に問題があるとは思えません。誰もがネット上で RGB 画像を使用しているはずですが、ブラウザーは依然として CMYK 画像を問題なく表示します。

画像を CMYK から RGB に変換するには、ImageMagick、GraphicsMagick、または ExactImage などのイメージ操作プログラムをインストールする必要があります。これらはどれもあなたが望むことを行うことができますが、サーバー管理者がインストールする必要があります. 運が良ければ、ImageMagick が既にインストールされている可能性があります。その場合は、次のようにすることができます。

$image= '/path/to/your/file.jpg';
$i = new Imagick($image);
$i->setImageColorspace(Imagick::COLORSPACE_SRGB);
$i->writeImage($image);
$i->destroy();

ImageMagick が最も強力で、ExactImage が最も高速であり、GraphicsMagick は ImageMagick のフォークであることに注意してください。ImageMagick は高速ですが、強力ではなく、いくつかのバグがあります。PHP から使用できるのは ImageMagick のみです。他のものはexec関数で実行する必要がありますが、PHP よりも独自のメモリとクリーンアップを処理する可能性が高いため、必ずしも悪いことではありません。

于 2011-12-30T05:11:03.033 に答える
2

CMYK は、加法混色ではなく減法混色を使用して画像を印刷する方法です。おそらくご存じのとおり、RGB カラーは赤、緑、青で構成されており、コンピューター モニターまたはテレビのピクセルがこれらの色を発します。印刷では、一般的に白い紙が使用されます。赤、緑、青の光を (ほぼ) 100% 反射します。インクを紙に塗ると、インクはこれらの色の 1 つまたは複数を吸収します。したがって、赤インクは実際には紙に反射する緑と青の光を吸収しています。印刷では、赤、緑、青の補色を使用します。シアン、マゼンタ、イエローです。CMY = シアン、マゼンタ、イエロー。Kは黒を表します。(RGB の青は既に B であるため、彼らは B を使用しませんでした。) シアン、マゼンタ、およびイエローのインクを使用して素敵な深い黒を得るのは難しいことがわかりました (さらに高価です - 3 つすべてを使用する必要があります!)。

これが意味することは、CMYK から RGB に変換する必要があるということです。残念ながら、それを行う方法は 1 つではありません。Photoshop などを見ると、変換する前にエミュレートするインクと用紙の種類を最初に設定する必要があります。

黒成分のない純粋な CMY がある場合、r = 1.0 - c、g = 1.0 - m、b = 1.0 - y を使用して、イメージの適切な近似値を得ることができます。この質問に対する最初の回答は、合理的な回答です。

また、Photoshop やその他のアプリで使用する特定の変換を見つけて、それからテーブルを作成することもできます。たとえば、1024x1024 の画像を作成することで、以前にこれを行ったことがあります。各 32x32 の正方形には、x 方向のシアンが 0 から 1 に進み、y 方向のマゼンタが 0 から 1 に進むグラデーションがあります。次に、左から右に、各正方形の黄色の量が増加し、上から下に進みます。それらには黒の量が増えています。画像を Photoshop に読み込み、RGB に変換し、タイル、ストリップ、またはレイヤーを使用せずに (使いやすさのために) ロスレス形式 (TIFF など) で再度保存します。次に、それをアプリに読み込み、ルックアップ テーブルとして使用して、RGB への同じ変換を行います。初めての方は少し面倒ですが、換算表を作ってしまえば結構簡単に使えます。

于 2011-12-30T01:56:45.250 に答える