imagecopyresampled in PHP, kann es jemand erklären?

OK Ich dachte, ich verstehe diese Funktion, aber ich habe eine komplette mentale Blockade in dieser.

Ich wollte aus Fotos der Größe 800 x 536 zugeschnittene Miniaturansichten der Größe 75 x 75 erstellen.

die Funktion imagecopyresampled hat 10 mögliche Parameter. Ich habe es zuerst versucht:

// 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);

dies findet jede Seite der Markierung auf halber Strecke im großen Bild und schneidet es aus. dachte ich mir. aber es beschneidet tatsächlich ein wenig des Bildes und lässt die rechte Seite und den unteren Teil schwarz (vermutlich aus der früheren Bildfarbe).

so fand ich einen Weg zu tun, was ich will, aber ich möchte, dass Sie erklären, wie es funktioniert.

ich habe jetzt

//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);

es macht es perfekt, verkleinert das Bild und schneidet dann die Mitte aus, aber meine Mathematik ist nicht sehr scharf und ich denke, es ist definitiv, dass ich die imagecopyresampled-Funktion nicht vollständig verstehe.

kann mir jemand durch den Weg gehen? Parameter für Parameter. vor allem die letzten beiden. ursprünglich habe ich die breite und höhe des originalbildes eingegeben, aber das sind 400 und 400 (die hälfte der längsten seite). Entschuldigung für die Schimpfe. hoffe mein Verstand versteht das bald:)

Ale

Antworten auf die Frage(2)

Ihre Antwort auf die Frage