Görüntü PHP sorunu yeniden boyutlandırma - gd çirkin resized görüntüleri oluşturur

5 Cevap php

Ben aşağıdaki işlevi kullanarak benim PHP komut sabit yükseklik ve genişliğe küçük resimlerini oluşturma

/*creates thumbnail of required dimensions*/
function createThumbnailofSize($sourcefilepath,$destdir,$reqwidth,$reqheight,$aspectratio=false)
{
    /*
     * $sourcefilepath =  absolute source file path of jpeg
     * $destdir =  absolute path of destination directory of thumbnail ending with "/"
     */
    $thumbWidth = $reqwidth; /*pixels*/
    $filename = split("[/\\]",$sourcefilepath);
    $filename = $filename[count($filename)-1];
    $thumbnail_path = $destdir.$filename;
    $image_file = $sourcefilepath;

    $img = imagecreatefromjpeg($image_file);
    $width = imagesx( $img );
    $height = imagesy( $img );

    // calculate thumbnail size
    $new_width = $thumbWidth;
    if($aspectratio==true)
    {
    	$new_height = floor( $height * ( $thumbWidth / $width ) );
    }
    else
    {
    	$new_height = $reqheight;
    }

    // create a new temporary image
    $tmp_img = imagecreatetruecolor( $new_width, $new_height );

    // copy and resize old image into new image
    imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

    // save thumbnail into a file

    $returnvalue = imagejpeg($tmp_img,$thumbnail_path);
    imagedestroy($img);
    return $returnvalue;
}

ve ben şu parametreleri ile bu işlev çağrısı

createThumbnailofSize($sourcefilepath,$destdir,48,48,false);

ama sorun ben Adobe Fotoğraf mağazası ile aynı işlemi gerçekleştirdiğinizde bu kadar neden bu .. iyi bir dönüşüm gerçekleştirir, ortaya çıkan görüntü çok kalitesiz olduğunu? Ben çıktı görüntüsünün kalitesini değiştirmek hangi aracılığıyla, herhangi bir kalite parametresi bulamadı ..

5 Cevap

o görüntü kalitesi ise size imagejpeg kullanarak görüntüyü kaydederken kalite parametresi vermeniz gerekir sonra sen ($ tmp_img, $ thumbnail_path, 100) / / varsayılan değer 75'tir

/*creates thumbnail of required dimensions*/
function 
createThumbnailofSize($sourcefilepath,$destdir,$reqwidth,$reqheight,$aspectratio=false)
{
    /*
     * $sourcefilepath =  absolute source file path of jpeg
     * $destdir =  absolute path of destination directory of thumbnail ending with "/"
     */
    $thumbWidth = $reqwidth; /*pixels*/
    $filename = split("[/\\]",$sourcefilepath);
    $filename = $filename[count($filename)-1];
    $thumbnail_path = $destdir.$filename;
    $image_file = $sourcefilepath;

$img = imagecreatefromjpeg($image_file);
$width = imagesx( $img );
$height = imagesy( $img );

// calculate thumbnail size
$new_width = $thumbWidth;
if($aspectratio==true)
{
    $new_height = floor( $height * ( $thumbWidth / $width ) );
}
else
{
    $new_height = $reqheight;
}

// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );

// copy and resize old image into new image
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

// save thumbnail into a file

$returnvalue = imagejpeg($tmp_img,$thumbnail_path,100);
imagedestroy($img);
return $returnvalue;

}

Ayrıca (http://us3.php.net/manual/en/book.imagick.php) yerine Gd ImageMagick kullanarak düşünebiliriz. Java ile günde sadece bir kaç önce aynı problem vardı. Imagemagick yerine huge kalite farkı Java Gelişmiş Görsel resultet için gidiyor.

Ayrıca Image_Transform PEAR package bakmak isteyebilirsiniz. Bu sizin için düşük seviyeli ayrıntılar çok önemser ve ağrısız oluşturma ve görüntüleri maniuplating yapar. Ayrıca, GD veya ImageMagick kitaplıkları da kullanmanızı sağlar. Ben çeşitli projeler üzerinde büyük bir başarı ile kullandım.

php.Thumbnailer kullanarak çalıştı?

$thumb=new Thumbnailer("photo.jpg");
$thumb->thumbSquare(48)->save("thumb.jpg");

Sonuç fotoğraf 48x48px edilecektir. Kolay değil mi? :)