Thumbnail - kleines Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Thumbnail - kleines Problem

    Hallo zusammen

    Ich habe schon mehrere Codes für Thumbnailerstellung angesehen und ausprobiert - sowohl on-the-fly als auch solche, die das TN abspeichern. Ich möchte jedoch, dass das thumbnail immer eine feste grösse hat, und zwar 130x170 pixel - egal ob es ein Hoch- oder Breitformat-Bild ist. Zudem soll das Bild nicht verzogen sein.

    Jedoch muss auf dem Thumbnail nicht alles zu sehen sein, sondern einfach ein möglichst grosser Ausschnitt, welcher das Seitenverhältnis 130:170 px hat. Stichwort hierbei ist die "Crop-Funktion".

    So weit habe ich mir auch schon etwas "zusammengebastelt" bzw. ein vorhandenes Script verwendet, welches so weit auch schon ganz gut funktioniert. Nur wird der Bildausschnitt nicht aus der Mitte genommen, und genau da stecke ich nun fest. Ich habe es bei einem Breitbild versucht, und der Ausschnitt stammt definitiv nicht von der Mitte...


    Hier der Code:



    PHP-Code:
    <?php
    // Thumbnail Groesse.
    $width 120;
    $height 160;
    // Groesse des Bildes definieren
    $dimensions getimagesize('bild1.jpg');
    // Prepare canvas
    $canvas imagecreatetruecolor($width,$height);
    $piece imagecreatefromjpeg('bild1.jpg');
    // Resize und Crop festlegen.
    if($dimensions[0] > $dimensions[1])
    {
      
    $newwidth $dimensions[1] / 2;
      
    $newheight $dimensions[0] / 2;
    }
    else
    {
      
    $newwidth $dimensions[0] / 2;
      
    $newheight $dimensions[1] / 2;
    }

    $cropLeft = ($newwidth/2) - ($width/2);
    $cropHeight = ($newheight/2) - ($height/2);
    // CopyResized
    imagecopyresized($canvas$piece0,0$cropLeft$cropHeight$width,
      
    $height$newwidth$newheight);

    // Img speichern oder fehler ausgeben.
    if (imagejpeg($canvas,'bild1-neu.jpg',90)) {
    echo 
    'Image crop successful';
    } else {
    echo 
    'Image crop failed';
    }
    // Clean-up
    imagedestroy($canvas);
    imagedestroy($piece);
    ?>


    Hat da vielleicht jemand eine Idee? Oder kennt jemand ein Script, welches (besser) funktioniert und das gewünschte ebenfalls liefert?


    Vielen Dank schon im Voraus.

    Vincent2k6



    PS: Und da ich neu bin: Ein "Hallo" an alle hier im Forum.

  • #2
    ich hab mir dienen code nicht angesehen, aber prinzip ist doch einfach.

    Bsp. Bild ist 260 x 380 Pixel.

    Bild auf die entsprechende Breite (in dem Fall beises durch 2 = 130 x 190px) bringen, dann den Rest der Höhe berechnen: 190 - 170 = 20, die Hälfte sind 10px. Also weißt du wo du ausschneiden musst.

    Das ganze geht natürlich auch andersrum, erst position bestimmen, dann verkleinern. ist vermutlich weniger performant.

    Oder was ist dein Problem?

    Kommentar

    Lädt...
    X