Resimleri istenilen şekilde boyutlandırma (crop)

php logo Resimleri boyutlandırmak için bir çok yol denedim bu zamana kadar ancak bu sefer bulduğum yok en iyisi sanırım.Bi forumda rastladım ve ordan kendime göre düzenledim veya istediğim değişikliği yaptım.Umarım sizinde işinizi görür.

Normal yoldan resmimizi eklediğimizde tasarım olarak değişmemesi için elimizde sabit genişlik vermek zorunda kalıyoduk.Ancak vereceğim kodda istediğiniz boyutlara tam denk oluyor.Ve resmin kalitesi kesinlikle bozulmuyor.

<?
function cropImage($nw, $nh, $source, $stype, $dest) {
    $size = getimagesize($source);
    $w = $size[0];
    $h = $size[1];
    switch($stype) {
        case ‘gif’:
        $simg = imagecreatefromgif($source);
        break;
        case ‘jpg’:
        $simg = imagecreatefromjpeg($source);
        break;
        case ‘png’:
        $simg = imagecreatefrompng($source);
        break;
    }
    $dimg = imagecreatetruecolor($nw, $nh);
    $wm = $w/$nw;
    $hm = $h/$nh;
    $h_height = $nh/2;
    $w_height = $nw/2;
    if($w> $h) {
        $adjusted_width = $w / $hm;
        $half_width = $adjusted_width / 2;
        $int_width = $half_width - $w_height;
        imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
    } elseif(($w <$h) || ($w == $h)) {
        $adjusted_height = $h / $wm;
        $half_height = $adjusted_height / 2;
        $int_height = $half_height - $h_height;
        imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
    } else {
        imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
    }
    imagejpeg($dimg,$dest,100);
}
?>

Kullanımı:

$filename = $_FILES[’dosyamizinadi’][’tmp_name’];

$type= $_FILES[’dosyamizinadi’][type’];

cropImage(140, 107, $filename, $type, $kopylanacagiyer);

Bu şekilde 140*107 boyutlarında resmimizi şekillendirmiş olduk.

Düşüncelerinizi Esirgemeyin !!