2016-05-23 15 views
1

私はImagickと品質については、このウェブサイトから複数のトピックを見つけましたが、何も私を助けていない... 私はJPGとしてすべての画像を保存する必要があります。私は、このスクリプトを作成しました:ここPHP - Imagickを使用してJPGするすべての画像を変換する - 悪い品質

$image_url = 'http://limuzynamercedes.pl/wp-content/uploads/2014/06/3.png'; 
$image_code = file_get_contents($image_url); 

$img = new Imagick(); 
$img -> readImageBlob($image_code); 
$img->setResolution(300, 300); 
$d = $img->getImageGeometry(); 
$img->cropImage($d['width'],($d['height']-120), 0,0); 
$img->setImageFormat('jpeg'); 
$img->setImageCompression(imagick::COMPRESSION_JPEG); 
$img->setCompressionQuality(100); 
$img->writeImage('read.jpg'); 
$img->clear(); 

echo '<img src="read.jpg?'.time().'">';exit; 

は、元の画像です:http://s5.ifotos.pl/img/demo1jpg_saeaxqx.jpg

問題です

http://limuzynamercedes.pl/wp-content/uploads/2014/06/3.png 、ここでは私のスクリプトで変換された画像はありますか?なぜこの画像が悪い品質で変換されるのですか?

ありがとうございました。

+0

をJPG変換へ。 – Raptor

+0

それでは、どのようすべてefects(ぼやけ面積など)とJPGとしてこの画像を保存しますか?私はすべてのフォーマットの画像をJPGに保存しなければならず、これらの画像はオリジナルと同じに見えるはずです:/ – Majkson

+0

pngをjpgに変換すると、元の画像の背景が空白になっていて、まだ隠れていません。あなたが望むのであれば、最初のCS Photoshopは良いですが、画像エディタでPNGファイルをチェックして、画像のレイヤーを確認し、その後、車をトリミング。これはちょうどjpgとして保存し、それを直接アップロードするよりも意味がありません。 –

答えて

3

画像が(見つかりませぼやけた領域が存在しない)、「悪い品質」ではないが、2つの画像間の差はJPG変換に透明PNGによって引き起こされます。

あなたは画像をトリミングする前に、次の2行を追加:画像が(見つかりませぼやけた領域がありません)「悪い品質」ではありませんが、2つの画像間の差は透明PNGによって引き起こされる

// set background to white (Imagick doesn't know how to deal with transparent background if you don't instruct it) 
$img->setImageBackgroundColor(new ImagickPixel('white')); 

// flattens multiple layers 
$img = $img->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); 
+0

)!ありがとう! – Majkson

+0

あなたを助けてくれてうれしいです。 – Raptor

関連する問題