Bild drehen

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

  • Bild drehen

    Hallo,

    ich versuche seit mehr als 10 Stunden vergeblich, ein Bild zu drehen. Das Bild wurde mit Php hochgeladen. Das hat funktioniert. Das Bild liegt jetzt im Ordner
    Code:
    uploads/files/
    und heißt
    Code:
    2012-06-02_10-42-08_21.jpg
    Von der Uploadseite wird man auf eine weiter Seite weiter geleitet, auf der das Bild angezeigt wird (funktioniert) und wo man angeben soll, ob das Bild gedreht werden soll. Von da aus geht es auf eine dritte Seite. Und mit der komme ich nicht weiter. Hier soll das Bild entsprechend gedreht dargestellt werden. Im Post-Array wurde die Bildadresse und der Drehwinkel übergeben.
    PHP-Code:
    $new_path=$_POST['Bild'];
    $Drehung=$_POST['Drehung'];​ 
    $Drehung kann den Wert 0, 90,180 oder 270 haben.

    Auch das funktioniert.
    PHP-Code:
    echo $new_path."<br />\n";
    echo 
    $Drehung."<br />\n";
    ​ 
    erzeugt
    uploads/files/2012-06-02_10-42-08_21.jpg
    90​
    Ab hier habe ich keine Ahnung, ob das sinnvoll und richtig ist, was ich mache. Offensichtlich wird in den vielen Manuals und Beschreibungen, die ich gelesen habe, etwas vorausgesetzt, das ich nicht weiß.

    Ich erzeugte mit
    PHP-Code:
    $GD_Bild imagecreatefromjpeg($new_path); 
    ein GD-Image, was auch immer das ist.
    Dann drehe ich mit
    PHP-Code:
    $rotate imagerotate($GD_Bild$Drehung0); 
    dieses GD-Image.

    Aber wie geht es weiter? Am Bild uploads/files/2012-06-02_10-42-08_21.jpg wurde ja nichts verändert. Die Manuals enden hier größtenteils. Wenn welche weiter gehen, erzeugt der Rest nur Fehlermeldungen.

    Das Bild uploads/files/2012-06-02_10-42-08_21.jpg soll mit dem um 90° gedrehten Bild überschrieben werden.

    Ich hoffe, das kann mir jemand so erklären, dass auch ich es verstehe. Ein Beispiel, bei dem so was gemacht wird, ohne dass dabei Datenbänke gefüllt, EXIF-Daten ausgelesen, Formate konvertiert werden usw. hilft mit vielleicht auch schon.

    Ich habe gelesen, dass ich mit
    PHP-Code:
    imagedestroy($source);
    imagedestroy($rotate);​ 
    den Speicher wieder freigeben muss. Aber davor fehlt wohl noch einiges.

  • #2
    Einfach mal in der PHP-Doku (ja, die gibt es tatsächlich) nachsehen, da findet man auch ganz viele Beispiele

    https://www.php.net/manual/de/function.imagejpeg.php

    Kommentar


    • #3
      Danke. In der PHP-Doku habe ich stundenlang gelesen. Aber die nützt leider nur etwas, wenn man die Lösung schon kennt. Man muss erst wissen, dass imagejpeg die gesuchte Funktion ist, dann kann man sich darüber informieren. Jetzt funktioniert alles wie gewünscht.

      Kommentar


      • #4
        Zitat von Friedel Beitrag anzeigen
        Danke. In der PHP-Doku habe ich stundenlang gelesen.
        Das glaub ich nicht
        Zitat von Friedel Beitrag anzeigen
        Aber die nützt leider nur etwas, wenn man die Lösung schon kennt. Man muss erst wissen, dass imagejpeg die gesuchte Funktion ist
        Völlig falsch!

        Siehe https://www.php.net/manual/de/ref.image.php
        imagejpeg — Gibt das Bild im Browser oder einer Datei aus.
        Wer lesen kann ist klar im Vorteil.


        Kommentar


        • #5
          Danke, ich habe es sehr hilfreich gelesen.
          Zuletzt geändert von ; 03.01.2024, 07:50.

          Kommentar


          • #6
            Ich denke, dass die Aussage von scatello richtig ist und stimme ihm zu.
            Zuletzt geändert von LucyCoffee; 20.05.2024, 02:39.

            Kommentar


            • #7
              Hallo,

              Du hast den Drehwinkel und den Pfad zum Bild bereits richtig im Post-Array. Hier ist ein vollständiges Beispiel, wie du das Bild drehst und das Originalbild überschreibst.
              1. Zuerst liest du das Bild ein.
              2. Dann drehst du das Bild.
              3. Schließlich speicherst du das gedrehte Bild unter dem ursprünglichen Pfad.
              Hier ist der vollständige PHP-Code:

              PHP-Code:
              // Pfad zum Bild und Drehwinkel aus dem Post-Array holen
              $new_path $_POST['Bild'];
              $Drehung $_POST['Drehung'];

              // Bild einlesen
              $GD_Bild imagecreatefromjpeg($new_path);

              // Bild drehen
              $rotate imagerotate($GD_Bild$Drehung0);

              // Gedrehtes Bild speichern (Original überschreiben)
              imagejpeg($rotate$new_path);

              // Speicher freigeben
              imagedestroy($GD_Bild);
              imagedestroy($rotate);

              // Erfolgsmeldung oder Weiterleitung (optional)
              echo "Das Bild wurde erfolgreich gedreht und gespeichert."
              Ein paar Anmerkungen zu den Schritten:
              1. imagecreatefromjpeg($new_path);liest das Bild ein und erstellt ein GD-Bild.
              2. imagerotate($GD_Bild, $Drehung, 0);Dreht das Bild um den angegebenen Winkel.
              3. imagejpeg($rotate, $new_path);speichert das gedrehte Bild wieder unter dem ursprünglichen Pfad, wodurch das Original überschrieben wird.
              4. imagedestroy($GD_Bild);und imagedestroy($rotate);geben den Speicher frei, der für die Bilder verwendet wurde.
              Ich hoffe, das hilft dir weiter! Wenn du noch Fragen hast, lass es mich wissen.

              Viele Grüße, Nico
              Webspace , Php

              Kommentar

              Lädt...
              X