Ankündigung

Einklappen
Keine Ankündigung bisher.

Bild vor dem Upload zuschneiden

Einklappen

Neue Werbung 2019

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

  • Bild vor dem Upload zuschneiden

    Hallo,

    mein Upload Script speichert das Bild zuerst in ein Tmp Verzeichnis wo ich es dann nochmals lade. Das hat den Sinn das ich es nach dem Upload nochmals zuschneiden kann. Dafür hab ich ein Javascript welches mir hilft per Maus einen Rahmen über das Bild zu setzen und das Bild auch zu verkleinern. Nach dem Senden des zugeschnittenen Teilbildes bekomme ich per $_POST folgende Werte $size_x, $size_y, $offset_x, offset_y, $img_width, $img_height und natürlich hab ich noch die $orig_img_height, $orig_img_height welche ich per getimagesize() bekomme.

    Nun meine Frage:

    Ich möchte anhand dieser Werte das Teilbild mit Hilfe von imagecreatefromjpg(), imagecreatetruecolor() und imagecopyresampled() erstellen.

    Wie kann ich da die Werte einsetzen? Denn ich bekomme da immer wrong image size.

    Bitte um Hilfe

    Grüsse


  • #2
    Schon mal in die Grafik-Funktion geschaut ?
    Dort steht einiges über das Kopieren drin, und damit könntest du sowas machen.

    Kommentar


    • #3
      ja die hab ich schon mehrmals studiert, aber es klappt leider nicht so wie ich das mir vorstelle. Deswegen wende ich mich jetzt mal an dieses Forum und seine erfahrenen PHP User.

      Grüsse

      Kommentar


      • #4
        ja die hab ich schon mehrmals studiert, aber es klappt leider nicht so wie ich das mir vorstelle
        Dann zeige mal, was du bisher versucht hast, vielleicht können wir das Script dann korrigieren.

        Gruß
        phpfan

        Kommentar


        • #5
          Korrigieren oder weiter selber versuchen.
          Im Prinzip ist es nichts anders wie das:

          http://www.cix88.de/cix_php/php_graf...ausschnitt.php


          Verweis
          www.php.net/ImageCopyResized

          Kommentar


          • #6
            Zitat von phpfan
            ja die hab ich schon mehrmals studiert, aber es klappt leider nicht so wie ich das mir vorstelle
            Dann zeige mal, was du bisher versucht hast, vielleicht können wir das Script dann korrigieren.

            Gruß
            phpfan
            Hi phpfan,

            hier ist mal mein Code Schnippsel welches ich bisher benutzt hab:


            Code:
                
                
                
            
            
            PHP-Code:
            $dir "dir"; $sizelimit 1//Do you want a size limit, yes (1) or no (2)? $upload_path "$absoluter_pfad/$images/userpics_tmp"//Absolute path to where files are uploaded if(isset($_POST['submit']) && $_POST['submit'] == '   Speichern   ') { $dst_im "{$_SESSION['image_dst']}"; $src_im "{$_SESSION['image_tmp']}"; $image_size = array(); $image_size getimagesize(rtrim("$upload_path/{$_SESSION['uid']}.jpg")); $ow $image_size[0]; $oh $image_size[1]; $nw $_POST['img_width']; $nh $_POST['img_height']; $size_x $_POST['size_x']; $size_y $_POST['size_y']; $offset_x $_POST['offset_x']; $offset_y $_POST['offset_y']; $size_x $size_x $offset_x; $size_y $size_y $offset_y; $imgOut imagecreatetruecolor($nw$nh); $imgSrc imagecreatefromjpeg($src_im); $srcWidth imagesx($imgSrc); $srcHeight imagesy($imgSrc); imagecopyresampled($imgOut$imgSrc00$size_x$size_y$ow$oh$ow$oh); @imagejpeg($imgOut$dst_im90); @unlink("$upload_path/{$_SESSION['uid']}.jpg"); 
            $img_width und $img_height sind die neuen Bildgrössen

            $offset_x und $offset_y bleiben 0 solange man das bild nicht von oben nach unten oder von links nach rechts verkleinert.

            $size_x und $size_y sind die Bildgrössen welche ausgeschnitten werden sollen

            Grüsse[/code]

            Kommentar


            • #7
              Zitat von CIX88
              Korrigieren oder weiter selber versuchen.
              Im Prinzip ist es nichts anders wie das:

              http://www.cix88.de/cix_php/php_graf...ausschnitt.php


              Verweis
              www.php.net/ImageCopyResized

              Hi Cixx88,

              auch dein Bsp. hab ich versucht, aber das mit dem offset klappt nicht ganz.

              Kommentar


              • #8
                Bitte bei PHP-Quellcode [PHP]-Tags benutzen:
                Code:
                    
                    
                    
                
                
                PHP-Code:
                 /*  Hier Quellcode posten, natürlich ohne [ code ] :-)  */ 
                Hmm, kann grad dein Script nicht ganz folgen, was ist $offset_x bzw. $offset_y ?
                Auf was bezieht sich das ?

                Kommentar


                • #9
                  Zitat von CIX88
                  Bitte bei PHP-Quellcode [PHP]-Tags benutzen:
                  Code:
                      
                      
                      
                  
                  
                  PHP-Code:
                   /*  Hier Quellcode posten, natürlich ohne [ code ] :-)  */ 
                  ja Sorry das nächste mal poste ich mein Quellcode mit Hilfe von BB Code versprochen

                  Hmm, kann grad dein Script nicht ganz folgen, was ist $offset_x bzw. $offset_y ?
                  Auf was bezieht sich das ?
                  Also $offset_x ist die Bildposition für unten links und $offset_y ist die Bildposition für oben links

                  Hier hab ich das Demo zu meinem Problem. Ich habe eine var_dump() als Ausgabe hinzugefügt nachdem das Bild komplett bearbeitet und hochgeladen wurde. Da sieht man genau was $offset für Daten beinhaltet.

                  http://www.crazyconnection.de/einstellungen/foto.php

                  Kommentar


                  • #10
                    Also $offset_x ist die Bildposition für unten links und $offset_y ist die Bildposition für oben links
                    Jo dann verstehe ich aber $size_x = $size_x - $offset_x; nicht ganz.
                    Du brauchst nur 4 Angaben: X,Y sowie Breite und Höhe - mehr nicht.

                    Bei der Demo kommt aber noch:

                    Notice: Undefined index: image_dst in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 43

                    Notice: Undefined index: image_dst2 in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 44

                    Notice: Undefined index: image_dst3 in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 45

                    Notice: Undefined index: image_tmp in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 47

                    Warning: imagesx(): supplied argument is not a valid Image resource in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 74

                    Warning: imagesy(): supplied argument is not a valid Image resource in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 75

                    EDIT:

                    Im FF ging es bei mir garnicht, nur im IE.

                    Kommentar


                    • #11
                      Zitat von CIX88
                      Also $offset_x ist die Bildposition für unten links und $offset_y ist die Bildposition für oben links
                      Jo dann verstehe ich aber $size_x = $size_x - $offset_x; nicht ganz.
                      Du brauchst nur 4 Angaben: X,Y sowie Breite und Höhe - mehr nicht.
                      ich hab das mal ohne $offset_x und $offset_y versucht (also die zeilen $size_x = $size_x - $offset_x; und $size_y = $size_y - $offset_y; herausgenommen) und nur die $size_x, $size_y, $img_width und $img_height verwendet, aber das klappt immernoch nicht ganz.

                      Bei der Demo kommt aber noch:

                      Notice: Undefined index: image_dst in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 43

                      Notice: Undefined index: image_dst2 in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 44

                      Notice: Undefined index: image_dst3 in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 45

                      Notice: Undefined index: image_tmp in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 47

                      Warning: imagesx(): supplied argument is not a valid Image resource in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 74

                      Warning: imagesy(): supplied argument is not a valid Image resource in /homepages/9/d17719479/htdocs/crazyconnection.de/einstellungen/foto.php on line 75
                      Dieser Fehler sollte jetzt weg sein, das lag an der Session die ich ja bei der Demo ausgeschaltet hab und ein paar Änderungen vergessen hab.

                      EDIT:

                      Im FF ging es bei mir garnicht, nur im IE.
                      ja das hab ich grade auch nochmal getestet. Dann muss ich wohl mit Hilfe von $HTTP_USER_AGENT überprüfen mit welchem Browser gearbeitet wird und gegebenfalls bei FF das Bild automatisch komprimieren und anpassen.

                      Kommentar


                      • #12
                        Hängt sicher mit dem JS zusammen.
                        Ist nur eine Vermutung, da ich mich nicht wirklich mit JS auskenne (will es auch nicht).

                        nur die $size_x, $size_y, $img_width und $img_height verwendet
                        Ich hätte das mal einzel getestet, ob die Werte überhaupt ankommen und welchen Inhalt diese haben.

                        Kommentar


                        • #13
                          Zitat von CIX88
                          Hängt sicher mit dem JS zusammen.
                          Ist nur eine Vermutung, da ich mich nicht wirklich mit JS auskenne (will es auch nicht).
                          ja das vermute ich auch stark.

                          Ich hätte das mal einzel getestet, ob die Werte überhaupt ankommen und welchen Inhalt diese haben.
                          Also laut var_dump($_POST) kommen die Werte alle an. Die siehste auch wenn du das Bild hochgeladen hast, bearbeitet und gespeichert hast

                          Der Inhalt der Variablen:
                          $img_width und $img_height = neue Bildgrösse

                          $size_x und $size_y = der Bildausschnitt also das Teilbild welches per JS ausgewählt wurde

                          $offset_x = Position des Rahmens von links aus gesehen
                          $offset_y = Position des Rahmens von oben aus gesehen

                          Grüsse

                          Kommentar


                          • #14
                            Wollte grad dein Beispiellink nochmal testen, aber ausser:

                            Diese Funktion ist bisher nur mit Internet Explorer möglich
                            kommt da nichts mehr.

                            Kommentar


                            • #15
                              Zitat von CIX88
                              Wollte grad dein Beispiellink nochmal testen, aber ausser:

                              Diese Funktion ist bisher nur mit Internet Explorer möglich
                              kommt da nichts mehr.
                              hmm diese Meldung sollte aber nur bei Firefox kommen. Ich habe das jetzt auskommentiert. Versuch es bitte nochmal

                              Kommentar

                              Lädt...
                              X