Müssen Sie eine verkleinerte Miniaturansicht zentrieren

  • Ich habe den folgenden Code zum Erzeugen von Miniaturansichten aus einem Benutzerupload: Er erstellt die Miniaturansicht, behält das Seitenverhältnis bei und fügt einen weißen Hintergrund hinzu. Richtet sie jedoch oben links aus . Ich muss es horizontal und vertikal zentrieren.

     function makethumbnail($thumbw,$thumbh,$thumbName,$sourceName){
    
    $ext=getExtension($sourceName);
    //echo $ext;
    $sourcePath = 'images/logos/deals/'; // Path of original image
    $sourceUrl = 'http://www.malldeals.com/admin/convert/';
    $thumbPath = $sourcePath; // Writeable thumb path
    $thumbUrl = $sourceUrl . $thumbPath ;
    $thumbHeight=0;
    $thumbWidth=0;
    // Beyond this point is simply code.
    if(!strcmp("png",$ext))
        $sourceImage = imagecreatefrompng("$sourcePath/$sourceName");   
    else if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext))
        $sourceImage = imagecreatefromjpeg("$sourcePath/$sourceName");  
    else if(!strcmp("gif",$ext))
        $sourceImage = imagecreatefromgif("$sourcePath/$sourceName");   
                global $sourceWidth, $sourceHeight;
                $sourceWidth = imagesx($sourceImage);
                $sourceHeight = imagesy($sourceImage);
    
    $ratio1=$sourceWidth/$thumbw;
    $ratio2=$sourceHeight/$thumbh;
    if($ratio1>$ratio2) {
        $thumbWidth=$thumbw;
        $thumbHeight=$sourceHeight/$ratio1;
    }
    else {
        $thumbHeight=$thumbh;
        $thumbWidth=$sourceWidth/$ratio2;
    }
    
    
    $targetImage = imagecreatetruecolor($thumbw,$thumbh);
    
        // get the color white
        $color = imagecolorallocate($targetImage, 255, 255, 255);
    
        // fill entire image
        imagefill($targetImage, 0, 0, $color);
    imagecopyresampled($targetImage,$sourceImage,0,0,0,0,$thumbWidth,$thumbHeight,imagesx($sourceImage),imagesy($sourceImage));
     
    22 November 2011
    Jean-Pierre Bazinet
2 answers
  • Ich habe eine Funktion für die Bearbeitung von PHP-GD-Bildern erstellt.
    PHP -GD-Imagestyle
    Sie können zentrierte Miniaturen erstellen, indem Sie den Stil für die automatische Größe verwenden.

     $thumb = imagestyle($image,'autosize:250 250');
     
    05 March 2016
    Warren SergentA_user
  • So etwas könnte die letzte Codezeile oben ersetzen

     $offsetx = round((imagesx($sourceImage) - $thumbw) / 2);
    $offsety = round((imagesy($sourceImage) - $thumbh) / 2);
    
    imagecopyresampled($targetImage,$sourceImage,$offsetx,$offsety,
    0,0,$thumbWidth,$thumbHeight,imagesx($sourceImage),imagesy($sourceImage));
     
    22 November 2011
    Steve Lewis