Bilddateien uploaden, testen, resize

  • Hallo zusammen,


    Dann auf ein Neues:


    Bin seit geraumer Zeit dran eine Funktion zu schreiben, die "alles in einem macht":




    Bin gerade an einem JPG Bildformat am testen, um den resize hinzubekommen. Also, das Bild wird kontrolliert auf: - Ist der Bildinhalt ein Bild, - Ist die Dateiendung JPG, PNG oder GIF - ISt die Dateigröße nicht zu gross - ist überhaupt eine Datei ausgewählt worden.
    Alles das funktioniert soweit auch. Aber der resize der funktioniert noch nicht.
    Warum ?!?!?!?!?! keine Ahnung.



    Der Pfad der Bilder wird in $pfad in die Funktion reingegeben.
    Die Endungen über $endungen
    Und die gewünschte Bildhöhe über $bildhoehe.

  • Vorweg: image resize ist tricky. Wenn Du was fertiges wilst, dann guck mal hier: http://stackoverflow.com/a/23772147/3411766
    Das Bild wird auf die $maxsize zugeschnitten, wobei es egal ist, ob Breite oder Höhe.
    Wenn das Bild Hochkannt ist, dann ist die max Höhe eben $maxsize. Sonst die max Breite.


    Es wird immer ein png (imagepng) erstellt. Denke aber, wenn man statt imagepng() zB imagejpeg() nutzt, sollte es auch funktionieren.


    Das Bild wird durch imagepng() in den ielordner gepseichert.
    Das Original (zB PHP tmp) bleibt wo es ist. Nach Scriptende wird der tmp Ordner automatisch geleert (wenn nicht in php.ini oder ini_set() geändert).


    Lief bei mir ohne Probleme.


    Kann bei Dir auf Anhieb nix falsches sehen. Hab aber leider auch gerade keine Zeit es zu testen.
    Bekommst Du denn Fehlermeldungen?
    nutze mal:

    PHP
    ini_set('display_errors', -1);
    error_reporting(E_ALL | E_STRICT);
  • HEY !!!



    ES KLAPPT.
    Mann muss ja php.net nur mal richtig lesen!!!!!!
    Hatte in dem Befehl:

    PHP
    imagejpeg($bild_neu, null, 100)


    vergessen den Zielpfad der Datei anzugeben.


    Muss also so, oder so ähnlich aussehen:


    PHP
    imagejpeg($bild_neu, $dateipfad.$_FILES['datei']['name'], 100)




    cottton:


    Ja hab im Netz verschiedene Ansätze gesehen.
    Alle betrachten immer das Seitenverhältnis des Bildes getrennt.
    Hat mich gestört. Weil:
    Die Ratio (Seitenverhältnis) ergibt sich aus Höhe durch Breite.



    Bild 150 px X 100px (portrait)
    Höhe_alt = 150 px
    Höhe_neu = 100 px
    Ratio = 150:100 = 1.5


    Bild2 100px X 150px (landscape)
    Höhe_alt = 100px
    Breite_alt = 150px
    Ratio = 100:150 = 0.66666


    Wird das Bild neu berechnet sagen wir mal auf die Hälfte der Höhe wird jeweils die gleiche Berechnung für die Breite durchgeführt:
    Höhe_neu = Höhe_alt : Ratio
    Breite_neu = Breite_alt : Ratio


    Dies liegt in der Mathemathik begründet: Teile ich durch einen Wert unter 1 wird das Ergebnis größer!
    Also brauch ich diese Unterscheidung zwischen Portrait und Landscape gar nicht zu machen, um die neuen Höhen und Breiten zu ermitteln. Ich bekomme auch so die richtigen Werte.


    Und wie ein Freund ( fast 20 Jahre Erfahrung in Webdesign) von mir immer sagt: Weniger ist mehr in der Programmierung! Und ich denke mir mal Axel Pratzner und Cottton werden jetzt sagen: Solange es übersichtlich bleibt!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!