2014-10-01 4 views
1

Imagick이 선명한 이미지 크기 조정을 지원하지 않을 수도 있습니다. 심지어 최상의 필터조차도 내 파렴치한 결과로 돌아가고 있습니다. 내 겸손한 생각조차도 끔찍한 결과입니다. ImagickImagick 코드의 크기가 조정되지 않고 선명한 이미지를 생성하지 못하는 것 같습니다.

TimThumbs를 사용하여 크기를 조정할 : TimThumbs

주의 사항 급격한 품질 차이

이것은 내가 Imagick에서 얻을 수있는 최고의 품질인가? Imagick에서 선명한 이미지를 생성하는 예를 제공 할 수 있습니까?

function imgSize($imagePath,$imageName,$imageExt,$width,$height,$copy) { 
    $file = "img/".$imageName."-".$width."x".$height.".".$imageExt; 
    if (!file_exists($file)) { 
     try { 
       $image = $imagePath; 
       $im = new Imagick(); 
       $im->pingImage($image); 
       $im->readImage($image); 
       $im->setImageFormat($imageExt); 
       //$im->thumbnailImage($width,$height,true); 
       $im->cropThumbnailImage($width,$height); 
       $im->resizeImage($width,$height,Imagick::FILTER_LANCZOS,0,false); 
       $im->cropThumbnailImage($width,$height); 
       if ($imageExt=("jpg"||"JPG")) { 
        $img->setComression(Imagick::COMPRESSION_JPEG); 
        $img->setComressionQuality(100); 
       } 
       if (!$copy==null) { 
        $draw = new ImagickDraw(); 
        $draw->setFont("fpdf/font/Montserrat-Regular.ttf"); 
        $draw->setFontSize(35); 
        $draw->setFillColor("Gray"); 
        $draw->setFillAlpha(0.5); 
        $draw->setGravity(Imagick::INTERPOLATE_AVERAGE); 
        $im->annotateImage($draw,0,0,-45,$copy); 
       } 
       $im->writeImage("img/".$imageName."-".$width."x".$height.".".$imageExt); 
       $im->destroy(); 
       return "img/".$imageName."-".$width."x".$height.".".$imageExt; 
     } 
     catch(Exception $e) { echo $e->getMessage(); } 
    } 
}; 

내가 비슷한 질문이 있지만 이미지 품질 문제에 대한 충분한 답이되지 않았습니다 알고 :

다음은 첫 번째 이미지를 생성하는 데 사용되는 Imagick 코드입니다. Imagick의 이미지 품질 문제를 해결하려는 대부분의 시도는 문제를 "이미지를 축소 할 때 얻을 수있는 것"으로 줄이는 것입니다. 그러나이 포스트에서 제공 한 TimThumbs 이미지 예제는 그 가정을 반증합니다. PHP를 사용하여 이미지를 축소하고 놀라운 결과를 얻을 수 있습니다.

+0

나에게, 당신은 확실하다 가로 세로 배급을위한 수학 이미지가 정확합니까? –

+0

@ Mr.Concolato 문제가있는 경우 볼 수 없습니다. 위에 제공된 코드는 인터넷상의 다른 사람들이 사용하는 표준을 따르는 것 같습니다. 나는 그 문제를 받아들이는 것 이상으로 내 자신의 것입니다. 사실 나는 그것을 더 빨리 정할 수 있도록 선호한다. :) – spencerthayer

+0

충분합니다. 그냥 확인해. :) –

답변

3

이것은 나에게 좋을 것 같습니다. 원본 이미지의 20 % 크기를 조정했습니다. 우선 당신이이 방법 이름 철자가, 당신의 코드를 확인하기 위해 php55-imagick 확장을 컴파일

function resizeImg($filename, $percent, $saveTo) { 

    list($width, $height) = getimagesize($filename); 
    $newwidth = $width * $percent; 
    $newheight = $height * $percent; 

    $thumb = imagecreatetruecolor($newwidth, $newheight); 
    $source = imagecreatefromjpeg($filename); 

    imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
    imagejpeg($thumb, $saveTo, 100); 
    imagedestroy($thumb); 
} 

resizeImg('image.jpg', 0.2, 'image02.jpg'); 

GD

JPEG로 GD 100 % 품질을 사용하여 고정 할 때 이미지를 결과 실제로 OK입니다 setCompression 하지 setComression

$im->setCompression(Imagick::COMPRESSION_JPEG); 
$im->setCompressionQuality(100); 
여기

Imagick

이미지 올바른 함께 showdev 주석, 두배로 이미지 크기 (329K 대 121K) 등의 방법하지만 여기에 잘못이있는의 Imagick를 비난하기 전에별로 혜택

$im->setImageCompression(Imagick::COMPRESSION_JPEG); 
$im->setImageCompressionQuality(100); 

Imagick using setImageCompression

+0

흥미 롭습니다. 나는 TimThumbs가 GD를 사용한다고 믿습니다. GD 코드가 무엇인지 묻는 것을 꺼려한다면? – spencerthayer

+0

수정 : 코드를 추가 – BojanT

+0

본 적이 있습니다. 글쎄, Imagick보다 더 나은 결과를 얻는 것처럼 GD에 이것을 다시 쓰려고한다. 그러나 Imagick을 직접 다루지는 못하지만 GD v. Imagick 논쟁에서 그와 같은 강력한 사례를 만들어 내기 때문에 이것을 답변으로 표시하지 않을 것입니다. Imagick은 가장 중요한 카테고리 인 품질이 부족한 것 같습니다. – spencerthayer