Ankündigung

Einklappen
Keine Ankündigung bisher.

Bilder Orientierung beim Upload

Einklappen

Neue Werbung 2019

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

  • Bilder Orientierung beim Upload

    Hallo,

    Ich habe ein kleines Problem aber finde keine Lösung dafür. und zwar:

    über diese Seite werden User registriert für die Veranstaltungen http://graphicated.com/index.p…dual-registration?Itemid=

    jeder user kann/sollte sein bild vom Handy aufnehmen (Portrait) und hochladen, aber sobald die bilder hochgeladen sind, sind die dann im Landscape orientation . wie kann ich das vor oder nach dem Speichern nochmal als Portrait anzeigen/Speichern?

    PHP-Code:
    public function upload_file()
        {
            
    jimport('joomla.filesystem.folder');

            
    $config     EventbookingHelper::getConfig();
            
    $json       = array();
            
    $pathUpload JPATH_ROOT '/media/com_eventbooking/files';

            if (!
    JFolder::exists($pathUpload))
            {
                
    JFolder::create($pathUpload);
            }

            
    $allowedExtensions $config->attachment_file_types;

            if (!
    $allowedExtensions)
            {
                
    $allowedExtensions 'doc|docx|ppt|pptx|pdf|zip|rar|bmp|gif|jpg|jepg|png|swf|zipx';
            }

            
    $allowedExtensions explode('|'$allowedExtensions);
            
    $allowedExtensions array_map('trim'$allowedExtensions);

            
    $file     $this->input->files->get('file', array(), 'raw');
            
    $fileName $file['name'];
            
    $fileExt  JFile::getExt($fileName);


            if (
    in_array(strtolower($fileExt), $allowedExtensions))
            {
                
    $canUpload true;

                if (
    $config->upload_max_file_size 0)
                {
                    
    $maxFileSizeInByte $config->upload_max_file_size 1024 1024;

                    if (
    $file['size'] > $maxFileSizeInByte)
                    {
                        
    $json['error'] = JText::sprintf('EB_FILE_SIZE_TOO_LARGE'$config->upload_max_file_size 'MB');
                        
    $canUpload     false;
                    }
                }

                if (
    $canUpload)
                {

                    
    $fileName JFile::makeSafe($fileName);

                    if (
    JFile::exists($pathUpload '/' $fileName))
                    {
                        
    $targetFileName time() . '_' $fileName;
                    }
                    else
                    {
                        
    $targetFileName $fileName;
                    }

                    
    JFile::upload($file['tmp_name'], $pathUpload '/' $targetFileNamefalsetrue);

                    
    $json['success'] = JText::sprintf('EB_FILE_UPLOADED'$fileName);
                    
    $json['file']    = $targetFileName;
                }
            }
            else
            {
                
    $json['error'] = JText::sprintf('EB_FILE_NOT_ALLOWED'$fileExtimplode(', '$allowedExtensions));
            }

            echo 
    json_encode($json);

            
    $this->app->close();
        } 

  • #2
    Wie kann man nur so faul und ignorant sein.

    Wenn man etwas postet schaut man sich doch das Ergebnis an. Wenn man dann erkennt, das alles in einer Zeile steht, muss man wohl oder übel noch mal ran...

    Kommentar


    • #3
      jeder user kann/sollte sein bild vom Handy aufnehmen (Portrait) und hochladen, aber sobald die bilder hochgeladen sind, sind die dann im Landscape orientation .
      aha, landscape aufgenommnen ?
      drehen ausschneiden etc. machen die meisten wohl nochmal separat über gui,

      du suchst aber wohl:
      0x0112 Orientation int16u IFD0
      1 = Horizontal (normal)
      2 = Mirror horizontal
      3 = Rotate 180
      4 = Mirror vertical
      5 = Mirror horizontal and rotate 270 CW
      6 = Rotate 90 CW
      7 = Mirror horizontal and rotate 90 CW
      8 = Rotate 270 CW
      https://www.sno.phy.queensu.ca/~phil...ames/EXIF.html

      wie und wo du was mit swf fviles und ähnlicem machst, dein ding.

      Kommentar


      • #4
        Jetzt ist es lesbar. Hilfreich weniger, da dies wohl unter Joomla! läuft.
        Wenn die Orientierung der Bilder immer gleich falsch dargestellt wird, dann kannst du versuchen das mit CSS (image-orientation) zu richten.
        Falls du dein Bild mit den PHP-GD Funktionen weiterverarbeiten möchtest musst du die Exif_Info 'Orientation' selbst auswerten und das Bild entsprechend drehen, da Exif-Infos von PHP-GD ignoriert werden.
        Ich gehe davon aus das die Bilder nicht landscape aufgenommnen wurden.

        Kommentar


        • #5
          nein die werden im Protrait modus auf dem handy kamera aufgenommen und so hochgeladen.
          Ich habe versucht mit exif read data es auszulesen aber irgendwie bekomme ich das nicht zum laufen. mit der image-orientation wird es auf chrome nicht gelesen

          Kommentar


          • #6
            aber irgendwie bekomme ich das nicht zum laufen
            ist nicht sehr hilfreich.
            Eine Variante wäre die Orientation (s. #3) mit exif_read_data zu lesen und auszuwerten sowie dann das Bild mittels GD- und Image-Funktionen zu drehen und neu zu speichern.
            Steht aber schon in meiner Antwort #4. Woran scheitert es konkret? Wie sieht dein Versuch aus?

            Kommentar


            • #7
              Zitat von akkawi Beitrag anzeigen
              Ich habe versucht mit exif read data es auszulesen
              Deinen Versuch solltest du in Form von Code immer mit angeben, sonst weiss man nicht ob du es richtig umgesetzt hast und der Fehler wo anders zu suchen ist, oder aber ob der Code an sich schon die Fehlerursache ist.

              Kommentar


              • #8
                Ich habe beim anzeigen der Bilder im View script versucht die exif daten abzulesen aber bekomme ich immer meine ausgabe in der if abfrage ( no header data found)

                das ist ja meine Frage was muss ich machen, an einem Code beispiel eventuell? da zb. in meinem Code die Datei hier abgelesen wird:

                PHP-Code:
                 $file$this->input->files->get('file', array(), 'raw');
                          
                $fileName $file['name'];
                          
                $fileExt  JFile::getExt($fileName); 
                dann sollte ich das exif_read_data auf file setzten, aber bekomme immer ein fehler "Uncaught SyntaxError: Unexpected identifier
                at HTMLIFrameElement.<anonymous> (ajaxupload.js:610)"

                PHP-Code:
                $exif exif_read_data($file'IFD0');
                         echo 
                $exif===false "No header data found.<br />\n" "Image contains headers<br />\n";
                         
                $exif exif_read_data($file0true);
                         echo 
                "test2.jpg:<br />\n";
                         foreach (
                $exif as $key => $section) {
                                   foreach (
                $section as $name => $val) {
                                         echo 
                "$key.$name$val<br />\n";
                                    }
                        } 

                Kommentar


                • #9
                  Die Fehlermeldung ist vom Client (JavaScript) und nicht vom Server (PHP).

                  Kommentar


                  • #10
                    hmm stimmt, aber ich bekomme es nur wenn ich das letzte code $exif... hinzufüge.. also wie man siehtn ich jabe nicht viel ahnung davon, deswegen frage ich was ich da tun soll

                    Kommentar


                    • #11
                      Ja weil die Klasse bzw. API von Javascript aus bedient wird und wenn da was schief läuft kommt es eben als nicht auswertbar an, im Javascriptteil des Client.
                      Kennst du dich denn mit Joomla aus?

                      Meine Empfehlung lautet: wende dich an ein Joomla Forum.

                      Kommentar


                      • #12
                        Vorab: Kenne von Joomla nur den Namen..

                        Deine Methode upload_file() liefert doch mit
                        PHP-Code:
                        echo json_encode($json); 
                        ein JSON-String aus. Du must also jegliche zusätzliche Ausgaben (echo, var_dump) aus deiner Methode unterlassen damit die Funktionalität erhalten bleibt. Es muss also eine andere Möglichkeit gefunden werden Debug-Informationen zu erhalten, z.B. durch das Schreiben dieser Informationen in eine Log-Datei. Die debug-Klasse (-> signatur) unterstützt so etwas.

                        Unabhängig davon würde ich das Problem aus deinem Projekt rauslösen und erstmal mit nativen PHP separat realisieren mit einer Funktion/Methode, die du einfach testen kannst und dann später in dein Projekt einbinden kannst.

                        Kommentar

                        Lädt...
                        X