PHP imagecopyresampled, birisi açıklayabilir?

0 Cevap php

Tamam ben bu işlevi anlaşılan düşündüm ama bu bir zihinsel olarak tam bir blok var.

Ben 800x536 olan fotoğraflardan boyutu 75x75 kırpılan küçük oluşturmak istedik.

imagecopyresampled fonksiyonu 10 olası parametreleri vardır. Ben ilk bu çalıştı:

// Starting point of crop
        $tlx = floor(($width / 2) - ($new_width / 2)); //finds halfway point of big image and subtracts half of thumb.
        $tly = floor(($height / 2) - ($new_height / 2)); //gets centre of image to be cropped.

imagecopyresampled($tmp_img,$img,0,0,$tlx,$tly,$new_width,$new_height,$orig_width,$orig_height);

Bu büyük resmin üzerine yarım işaretinin iki tarafında bulur ve bunu bitkiler. ya da ben öyle düşündüm. ancak GÜNCEL resmin biraz bitkileri ve muhtemelen imagecreatetruecolor önceki Black (sağ tarafı ve alt bırakır.

bu yüzden ne istediğinizi yapmak için bir yol buldum ama bunu nasıl çalıştığını açıklamak istiyorum.

i var şimdi:

//Create thumbnails.
            $new_width = 75; //pixels.
            $new_height = 75;

            if($width > $height) $biggest_side = $width;   
            else $biggest_side = $height;   

            //The crop size will be half that of the largest side   
            $crop_percent = .5;   
            $crop_width   = $biggest_side*$crop_percent;   
            $crop_height  = $biggest_side*$crop_percent;

            $c1 = array("x"=>($width-$crop_width)/2, "y"=>($height-$crop_height)/2);

        //Create new image with new dimensions to hold thumb
        $tmp_img = imagecreatetruecolor($new_width,$new_height);

        //Copy and resample original image into new image.
            imagecopyresampled($tmp_img,$img,0,0,$c1['x'],$c1['y'],$new_width,$new_height,$crop_width,$crop_height);

Bu görüntüyü daralma ve ardından orta dışarı kırpma, mükemmel şekilde yapıyor, ama benim matematik çok keskin değildir ve aynı zamanda i i tamamen imagecopyresampled işlevini anlamak olmadığını kesinlikle düşünüyorum.

birisi beni yürüyebilir? parametresi ile parametre. Özellikle son iki. aslında ben orijinal görüntünün genişliğini ve yüksekliğini girmiş, ama bu 400 ve 400 (uzun kenarı yarısını) girer. rant için üzgünüm. Aklım yakında bu anlar umarım :)

Alex

0 Cevap