manni83: Bildgrößen erkennen und ggf. anpassen

Hallo,

ich habe den Shop osCommerce und damit ein Problem.
Derjenige, der den Shop betreiben möchte, nutzt verschieden große Bilder, d.h. einige waren zu hoch und zu breit.

Da diese Riesenbilder das Layout verwüstet haben, hat er im Admin Center Werte für alle Bilder dieser Klasse definiert.

Die Werte sorgen dafür, dass in der zugehörigen PHP <img height="Wert1" width="Wert2" (...) /> eingefügt werden.

An für sich nicht schlimm, aber zu dieser Klasse gehörten nicht nur große Bilder, sondern auch kleine Icons (120*60 usw.), die nun natürlich unschön gestreckt werden.

Aus diversen Gründen müssten die kleinen vorhanden bleiben, aber die zu großen dennoch auf adäquate Maße verkleinert werden.

Dazu hatte ich erst an CSS und max-height/max-width gedacht, aber das funktioniert im IE bis 6 nicht und ich kenne da kein Workaround darum.

Deshalb kam ich auf PHP als Idee.
Ist es möglich, folgendes (oder ähnliches) zu tun:

  • Bildmaße des hochgeladenen Bildes erkennen

  • wenn Bild kleiner als 400*267 (das ist unser maximaler Wert) => nichts machen, keine width/height-Werte einsetzen und das Bild bleibt klein.

  • wenn Bild größer/gleich 400*267 => width/height-Werte einfügen und das Bild auf diese Größe (400*267 als maximale Werte) verkleinern.

Ist so etwas in der Richtung möglich und weiß jemand, wie man das hinbekommt?

Danke im Voraus für jede Hilfe!

mfg
manni83

  1. Ahoi manni83,

    Deshalb kam ich auf PHP als Idee.

    und warfst einen blick ins Manual?

    Ist es möglich, folgendes (oder ähnliches) zu tun:

    • Bildmaße des hochgeladenen Bildes erkennen

    mit einem blick zu den Image Funktionen gesehen das es eine funktions namens: getimagesize() gibt was übersetzt soviel wie BekommeBildGröße heißt.

    • wenn Bild kleiner als 400*267 (das ist unser maximaler Wert) => nichts machen, keine width/height-Werte einsetzen und das Bild bleibt klein.
    • wenn Bild größer/gleich 400*267 => width/height-Werte einfügen und das Bild auf diese Größe (400*267 als maximale Werte) verkleinern.

    ließe sich mit einem If und dementsprechender behandlung verwirklichen.

    MfG

  2. Moin!

    Ist es möglich, folgendes (oder ähnliches) zu tun:

    • Bildmaße des hochgeladenen Bildes erkennen

    • wenn Bild kleiner als 400*267 (das ist unser maximaler Wert) => nichts machen, keine width/height-Werte einsetzen und das Bild bleibt klein.

    • wenn Bild größer/gleich 400*267 => width/height-Werte einfügen und das Bild auf diese Größe (400*267 als maximale Werte) verkleinern.

    Warum muß der Besucher denn dann diese riesigen Bilder trotzdem laden? Durch Verkleinerung mit Attributen im Bild wird die Dateigröße ja nicht reduziert. Im Gegenteil kriegt man oftmal eine sehr häßliche Verkleinerungsversion, weil die Browser da noch nicht allzu liebevolle Algorithmen verwenden.

    Mein Vorschlag: Alle Bilder, die zu groß sind, kleinrechnen - und zwar lokal. Und dann neu hochladen.

    Wenn das nicht klappt, dann eben mit PHP "Thumbnails" (kann man die bei der Größe noch so nennen?) generieren. Wird allerdings erheblich aufwendiger vom Code her, weil sowas den Server gut auslastet und theoretisch nur ein einziges Mal erledigt werden muß (das Resultat ändert sich ja nicht, solange das Originalbild sich nicht ändert), also aus Performancegründen ein Cache implementiert werden sollte...

    - Sven Rautenberg

    --
    "Love your nation - respect the others."