3

jpegファイルに丸い角を追加しようとしていますが、問題は、丸い角を追加した後、背景色が黒になることです。どういうわけか私はそれを他の色(白、透明、赤)に変えることができません。画像の角が丸いところに黒い背景が表示されているだけです。

私が使用しているコードは次のとおりです。

<?php

    $image = new Imagick('example.jpg');
    $image->setBackgroundColor("red");
    $image->setImageFormat("jpg");
    $image->roundCorners(575,575);
    $image->writeImage("rounded.jpg");
    header('Content-type: image/jpeg');
    echo $image;

?>

jpegファイルは約5MBと巨大なので、pngは使用できません。したがって、pngを使用すると、pngで透明な丸い角が追加されても、ファイルサイズは最大26MBになります。

また、私が使用しているIMagickのバージョンは次のとおりです。

ImageMagick 6.6.2-10 2010-06-29 Q16 http://www.imagemagick.org 

また、出力(生成された画像)が印刷されるので、cssがここで機能するかどうかはわかりません。

申し訳ありませんが、角が丸くない既存のjpegファイルから実際に角が丸い新しいjpegファイルを作成しようとしています。これは実際にはカメラから撮影した写真なので、色が多すぎたり多すぎたりするので、 tgifも使用します。

また、私のサイトは丸い角の画像を生成するだけで、その後、サイトの管理者がFTPプログラムを使用してダウンロードし、システムソフトウェアを使用して印刷されるため、要するに私のWebサイトは画像を印刷しません。生成するだけ

4

3 に答える 3

2

私は反対票を投じられるかもしれませんが、cssにコーナーを処理させ、サーバーの負荷を軽減させてください:)

CSSの丸みを帯びた角。

于 2012-11-27T07:32:03.240 に答える
2

JPGのパレットには、透明な色(アルファチャネル)がありません。

出力画像は、PNGまたはGIF(またはアルファチャネルをサポートする別の画像形式)のいずれかを使用する必要があります。

不透明な背景が必要な場合は、setImageBackgroundColorも別のオプションです。


編集

あなたのコメントは、あなたがコマンドラインを使おうとすることができることを私に思い出させます。shell_exec()PHPからコマンドライン引数を実行します。開始する必要があるImageMagickAPIのコマンドはですconvert example.jpg。その後、必要なさまざまなパラメーターを使用してフラグを渡すことができます。

ImageMagickはすでにインストールされているので、すぐに動作します。PATHすべての実行可能ファイルがあるImageMagickディレクトリをシステムにポイントする必要がある場合があります。

この方法では、角を丸くするための質問やフォーラムがたくさんあるので、それはあなたに任せます。

ただし、ここに役立つヒントがありますconvert。Windowsにもconvert.exeめったに使用されないコマンドがあるため、コマンドにはばかげた混乱がありますが、コマンドラインが混乱するため、正しい呼び出しを行っていることを確認してくださいconvert。;)動作するかどうかをテストするには、試してみてくださいconvert example.jpg example.gif(例をgifに変換する必要があります)。

コマンドラインから出力を取得するには、出力をPHP2>&1にパイプバックするすべてのコマンドを終了します。cmd

于 2012-11-27T07:38:27.590 に答える
2

これを試して:

<?php 
$input = 'example.jpg';
$size = getimagesize($input);
$background = new Imagick();
$background->newImage($size[0], $size[1], new ImagickPixel('red'));
$image = new Imagick($input);
$image->setImageFormat("png");
$image->roundCorners(575,575);
$image->compositeImage($background, imagick::COMPOSITE_DSTATOP, 0, 0);
$image->writeImage("rounded.jpg");
?>
于 2012-11-27T21:58:55.480 に答える