Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie definiere ich die maximale Bildhöhe?

Einklappen

Neue Werbung 2019

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

  • Wie definiere ich die maximale Bildhöhe?

    Hi,

    Kenn mich nicht so gut mit PHP aus, kann gerade mal die Scripts vernünftig einbinden, jetzt mein Problem:
    habe im Netz ein einfaches Bild-Upload script gefunden, welches die Bilder auf die richtige Größe skaliert. Das Script funktionier super, allerdings wird nur eine Maximale Breite festgelegt. Sieht n bisschen blöd aus, bei Bildern im Hochformat, da die Höhe dann wieder den Rahmen sprengt. Also wie kann ich hier noch zusätzlich die maximal Höhe des Bildes definieren?


    PHP-Code:
    <?php
    // Funktion zum Thumbnail erstellen

    function BildScale$Grafikdatei$ThumbnailBreite ) {

        
    $Bilddaten getimagesize$Grafikdatei );

        
    $OriginalBreite $Bilddaten[0];
        
    $OriginalHoehe $Bilddaten[1];

        if( 
    $OriginalBreite $ThumbnailBreite ) {
            
    $ThumbnailBreite $OriginalBreite;
        }
        
    $Skalierungsfaktor $OriginalBreite/$ThumbnailBreite;
        
    $ThumbnailHoehe intval$OriginalHoehe/$Skalierungsfaktor );


        
    $Originalgrafik imagecreatefromjpeg$Grafikdatei );
        
    $Thumbnailgrafik imagecreatetruecolor$ThumbnailBreite$ThumbnailHoehe );
        
    imagecopyresampled$Thumbnailgrafik$Originalgrafik0000$ThumbnailBreite$ThumbnailHoehe$OriginalBreite$OriginalHoehe );
        
    imagejpeg$Thumbnailgrafik$Grafikdatei90 );

        
    imagedestroy$Originalgrafik );
        
    imagedestroy$Thumbnailgrafik );
    }

    // Wenn das Formular abgeschickt wurde
    if( isset( $_POST['submit'] ) ) {
        
    $umaskold umask);
        
    // Falls die Datei groesser 0 Byte ist
        
    if( $_FILES['bild']['size'] > ) {
            
    // Datei verschieben und bei Misserfolg Fehler ausgeben
            
    if( !@move_uploaded_file$_FILES['bild']['tmp_name'], $_FILES['bild']['name'] ) ) {
                echo 
    'Konnte die Datei nicht kopieren!';
            } else {
                
    // Bildgroesse aendern (500px maximal Breite)
                
    BildScale$_FILES['bild']['name'], 100);

            }
            
    // CHMOD setzen damit man das Bild per FTP loeschen kann
            
    @chmod$_FILES['bild']['name'], 0755 );
            @
    chmod"t_" .$_FILES['bild']['name'], 0755 );
        }
        
    umask$umaskold );
    }

    ?>
    p.s: wo wir schonmal dabei sind: Hat noch jemand ne idee, wie ich das Verzeichnis bestimmen kann, in das die Bilder geladen werden? Bis jetzt lädt der die genau dahin hoch, wo das Script liegt...

    MFG, Alex

  • #2
    zum ersten Problem: Du musst halt eben eine ähnliche Logik wie bei der Breite auch bei der Höhe einfügen.
    Da Du Dich aber nicht gut auskennst, wird das nichts, da musst DU warten bis Dir eine ein fertiges snippet gibt (ich werds nicht sein)

    zum zweiten:
    in move_uploaded_file einfach das Directory vor den namen der Datei setzen...
    und in bildscale
    und in den chmods
    -> daher am besten vorher den namen neu definieren


    achja und wirf mal die ganzen affenschaukeln raus, dann bekommste auch mal ne anständige Fehlermeldung

    Kommentar


    • #3
      Hi!

      ok, erstmal zu dem Problem, die Dateien ins richtige Verzeichnis zu kopieren:
      hab das jetzt mal so probiert:

      PHP-Code:
      ini_set('display_errors''1'); #sorgt dafür, dass überhaupt Fehler angezeigt werden

      $uploaddir '/home/www/web122/html/blacrew/gfx/';
      $uploadfile $uploaddir$_FILES['bild']['name']; 
      ....
      PHP-Code:
          if( move_uploaded_file$_FILES['bild']['tmp_name'], $uploadfile) ) { 
      das bekomme ich die Fehlermeldung:
      Notice: Undefined index: bild in /home/www/web122/html/blacrew/testup.php on line 11
      geliefert...

      Den Lösungsansatz hab ich noch durch Recherche gefunden, aber wie meintest du das, mit einfach vor die Die Datei setzen? Was genau definiert die Datei denn da, tmp_name, bild ? Und brauche ich das Verzeichnis dann garnicht mehr in ner Variable zu speichern?

      gruss, Alex

      Kommentar


      • #4
        Ouh ich bins nochmal Problem gelöst :/ das Script gibt mir zwar als Fehlermeldung 'konnte datei nicht kopieren' zurück, ist ja aber auch kein Wunder bei der if-anweisung. Auf dem Server landet die Datei trotzdem im richtigen Verzeinis...

        Jetzt nurnoch das Problem mit der Größenskalierung, ich kapiere die Umrechnung einfach nicht, bzw. wie ich das auch auf Thumbnailhöhe übertrage

        PHP-Code:
        $Skalierungsfaktor $OriginalBreite/$ThumbnailBreite;
        $ThumbnailHoehe intval$OriginalHoehe/$Skalierungsfaktor ); 
        warum denn intval() bei Thumbnailhöhe?Habe mir die Funktion
        in der Doku mal angeschaut, die gibt ja nur den integer zurück,
        aber es wird doch eh nur mit Zahlen gearbeitet (?)
        Und warum wir die Originalbreite durch die Thumbnailbreite geteilt?
        damit erhalte ich doch nicht die maximal gewollte Größe
        (in meinem Fall 100px)

        einige Sachen, die ich hier noch nicht verstehe...


        Kommentar


        • #5
          Zitat von serio Beitrag anzeigen
          Ouh ich bins nochmal Problem gelöst :/ das Script gibt mir zwar als Fehlermeldung 'konnte datei nicht kopieren' zurück, ist ja aber auch kein Wunder bei der if-anweisung. Auf dem Server landet die Datei trotzdem im richtigen Verzeinis...
          Weißer Mann spricht in Rätseln
          Zitat von serio Beitrag anzeigen
          PHP-Code:
          $Skalierungsfaktor $OriginalBreite/$ThumbnailBreite;
          $ThumbnailHoehe intval$OriginalHoehe/$Skalierungsfaktor ); 
          warum denn intval() bei Thumbnailhöhe?Habe mir die Funktion
          in der Doku mal angeschaut, die gibt ja nur den integer zurück,
          aber es wird doch eh nur mit Zahlen gearbeitet (?)
          Mit Zahlen, ja. Aber nicht zwingend mit Integer
          Zitat von serio Beitrag anzeigen
          Und warum wir die Originalbreite durch die Thumbnailbreite geteilt?
          damit erhalte ich doch nicht die maximal gewollte Größe
          (in meinem Fall 100px)
          Sieh Dir halt mal die Variablennamen an. Was können die schon bedeuten? Und was wird denn mit dem Quotient aus OBreite und ThBreite gemacht?
          Oder nimm Dir einfach mal ein Blatt Papier, ein Lineal und nen Taschenrechner und überleg Dir ganz praktisch, wie man das in echt machen würde.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar

          Lädt...
          X