Bild zuschneiden - Problem

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

  • Bild zuschneiden - Problem

    Hallo,
    Ich möchte mit meinem script die Bilder, die der Nutzer hochlädt automatisch in ein Quadratisches Format schneiden.
    Dabei soll immer der großmöglichste quadratische Bereich aus dem Bild ausgeschnitten werden.

    Hier das aktuelle Script:

    (...)
    list ($b, $h, $t) = getimagesize($bild);
    //Bild ist Breiter als Hoch --> Variablen bestimmen
    if($b>$h)
    {
    $bcut=$b-$h;
    $nh=$h;
    $nb=$b-$bcut;
    }
    //Bild ist Höher als Breit --> Variablen bestimmen
    if($h>$b)
    {
    $hcut=$h-$b;
    $nb=$b;
    $nh=$h-$hcut;
    }
    //Bild ist genauso Breiter wie Hoch --> Variablen bestimmen
    if($b=$h)
    {
    $nh=$h;
    $nb=$b;
    }
    //Bild zuschneiden
    $resizedimg = imagecreatetruecolor( $nb, $nh );
    imagecopyresized( $resizedimg, $quelle, 0, 0, 0, 0, $nb, $nh, $b, $h);
    (...)

    So, wenn das Bild breiter als hoch oder genauso breit wie hoch ist funktioniert das ganze auch perfekt.
    Wenn das Bild aber höher als breit funktioniert das nicht wie gewollt.

    Wo liegt mein Fehler ?
    Ich hoffe meine Erklärung des Problems ist verständlich.

  • #2
    = ist eine Zuweisung und kein Vergleich.

    Kommentar


    • #3
      Stimmt, aber das sind ja alles Zuweisungen außer bei "if($h=$b)" da ist ein Fehler...

      Kommentar


      • #4
        Zitat von Jakob1997 Beitrag anzeigen
        Stimmt, aber das sind ja alles Zuweisungen außer bei "if($h=$b)" da ist ein Fehler...
        Den meint h3ll ja auch und der verursacht auch deine Probleme. Dort muss == stehen.

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Ja, das hab ich auch angepasst.
          Jetzt wird aber einfach das Bild gestaucht und es wird nicht ein quadratischer Bereich ausgeschnitten...
          Wo liegt mein Fehler ?!

          Kommentar


          • #6
            Zitat von Jakob1997 Beitrag anzeigen
            Wo liegt mein Fehler ?!
            Du verwendest im imagecopyresized()-Aufruf immer noch $b und $h. Also wird es von der alten Größe (z. B. 400×600) auf die neue Größe (400×400) skaliert. Wenn du immer die obere oder linke Ecke haben willst, nimm dort einfach nochmal $nb und $nh. Wenn du das Quadrat allerdings aus der Mitte des Originalbildes haben möchtest, solltest du deine ganze Herangehensweise überdenken.

            Das was du bisher machst, geht auch kürzer:

            PHP-Code:
            list ($b$h$t) = getimagesize($bild);
            $s min($b$h);
            $resizedimg imagecreatetruecolor($s$s);
            imagecopy$resizedimg$quelle0000$s$s); 
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Ach ich bin bescheuert...
              Dankeschön, hatte den Teil einfach kopiert und dachte es liegt an der Bestimmung der Variablen.
              Also funktioniert jetzt alles genauso wie ich es wollte.

              Also Dankeschön an alle, war sehr hilfreich.

              Kommentar

              Lädt...
              X