Katharina: Quadratischer Bildausschnitt

Hallo Ihr Lieben,

habe mir ein Script gebastelt um einen quadratischen Bildausschnitt aus einem Bild zu erstellen ... allerdings klappt das mit den Proportionen nicht so ganz und ich bekomme immer ein verzerrtes Quadrat bzw. einen schwarzen Rand rechts. Die Dimensionen für das Quadrat gibt die Bildbreite bzw. -höhe vor.

Hier mein Script - könnt Ihr mir sagen, was ich falsch gemacht habe?

Danke und liebe Grüße, Eure Katharina

  
$pic_orgW = $img_dimension[1];  
$pic_orgH = $img_dimension[0];  
  
 // Querformat  
if($pic_orgW > $pic_orgH)  
{  
    // x-Koordinate = Original-Breite/2 minus Originalhöhe/2  
    $pic_orgX = ($img_dimension[1]/2)-($img_dimension[0]/2);  
    // y-Koordinate  
    $pic_orgY = 0;  
    // Quadrat, daher Breite = Höhe  
    $pic_orgW = $pic_orgH;  
}  
//Hochformat  
if($pic_orgH > $pic_orgW)  
{  
    // x-Koordinate  
    $pic_orgX = 0;  
    // x-Koordinate = Original-Höhe/2 minus Originalbreite/2  
    $pic_orgY = ($img_dimension[0]/2)-($img_dimension[1]/2);  
    $pic_orgH = $pic_orgW;  
}  
  
//Originalbild einlesen  
$image = imagecreatefromjpeg($datei_tmp_name);  
  
//Quadratisches Bild erstellen  
$image_form = @imagecreatetruecolor($pic_orgW,$pic_orgH);  
if (!$image_form) { $image_form = imagecreate($pic_orgW,$pic_orgH); }  
  
//Quadratischen Ausschnitt aus Originalbild in quadratisches Bild kopieren  
imagecopyresampled($image_form,$image,0,0,$pic_orgX,$pic_orgY,$pic_orgW,$pic_orgH,$img_dimension[1],$img_dimension[0]);  
  
//Verschiedene Quadratische Größen erstellen  
$image1 = @imagecreatetruecolor(current($img_size_types),current($img_size_types));  
if (!$image1) { $image1 = imagecreate(current($img_size_types),current($img_size_types)); }  
  
//Bild verkleinern  
imagecopyresampled($image1,$image_form,0,0,0,0,current($img_size_types),current($img_size_types),$pic_orgW,$pic_orgH);  
  
//Bild speichern  
imagejpeg($image1,$img_path,100);  
  

  1. Die Darstellung in einem zweimal zu scrollenden Fenster ist nicht ganz hilfreich, ist das ne Sache des Forums?

    Hier
    imagecopyresampled($image_form,$image,0,0,$pic_orgX,$pic_orgY,$pic_orgW,$pic_orgH,$img_dimension[1],$img_dimension[0]);
    gibst du als letzte Parameter das aus $img_dimension an. Da gehören die gleichen Maße rein wie source width und height. Nachdem die gleich sind würd ich das zum besseren Verständnis sinnvoller benennen. Nicht "original width" sondern sowas wie "original square length", denn $pic_orgW und $pic_orgH sind inzischen gleich (sollten daher nicht beide wo auftauchen wo sie nur verwirren) und sind außerdem nicht mehr die original Breite und Höhe.

    Ich würde mir die ganzen Werte ausgeben und nachvollziehen, ob die auf dein Vorhaben passen. Daran siehst du praktisch live wo es hängt.