php GD fügt dem Bild Füllungen hinzu

Ich habe im Internet ein paar Dinge über PHP + GD in Bezug auf Bildmanipulation gefunden, aber keine scheint mir zu geben, wonach ich suche.

Ich habe jemanden, der ein Bild in einer beliebigen Größe hochlädt. Das von mir geschriebene Skript ändert die Größe des Bildes auf nicht mehr als 200 Pixel Breite und 200 Pixel Höhe unter Beibehaltung des Seitenverhältnisses. Das endgültige Bild könnte also beispielsweise 150 x 200 Pixel groß sein. Was ich tun möchte, ist dann das Bild weiter zu manipulieren und um das Bild eine Mattierung hinzuzufügen, um es auf 200 x 200 Pixel aufzufüllen, ohne das Originalbild zu beeinträchtigen. Zum Beispiel:

Der Code, mit dem ich die Größe des Bildes ändern muss, ist hier. Ich habe ein paar Dinge ausprobiert, habe aber definitiv ein Problem beim Implementieren des sekundären Prozesses zum Hinzufügen der Auffüllung.

list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
    case "image/gif":
        $source=imagecreatefromgif($image); 
        break;
    case "image/pjpeg":
    case "image/jpeg":
    case "image/jpg":
        $source=imagecreatefromjpeg($image); 
        break;
    case "image/png":
    case "image/x-png":
        $source=imagecreatefrompng($image); 
        break;
}
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
imagejpeg($newImage,$image,80);
chmod($image, 0777);

Ich denke, ich muss verwendenimagecopy() gleich nach demimagecopyresampled() Anruf. Auf diese Weise hat das Bild bereits die gewünschte Größe. Ich muss nur ein Bild mit einer Größe von genau 200 x 200 erstellen und $ newImage in die Mitte (vert und horiz) davon einfügen. Muss ich ein völlig neues Image erstellen und die beiden zusammenführen? Oder gibt es eine Möglichkeit, das Image, das ich bereits erstellt habe, einfach aufzufüllen ($newImage)? Vielen Dank im Voraus, alle Tutorials, die ich gefunden habe, haben mich nirgendwo hingeführt, und das einzige, was ich auf SO gefunden habe, war für Android :(

Antworten auf die Frage(1)

Ihre Antwort auf die Frage