Jan: Dateigrösse bei Bildern berechnen

Hi,
gibt es eine Möglichkeit,
die zu erwartenden Dateigrössen bei Images zu berechnen?

Ich möchte ein PHP-Bildgrössenscript programmieren,
was sich in erster Linie an der Dateigrösse orientiert.
Bsp.: das File darf max. 14kB haben und grössere Bilder
möchte ich automatisch proportional kleiner rechnen.

Für gifs wird das sicher schwierig,
aber sind jpgs vielleicht irgendwie definiert, dass man sagen kann:
Alle jpgs mit 30000 Bildpunkten (100px x 300px) haben x kB?

Geht sowas oder muss ich in einer Schleife
immer wieder verkleinern -> speichern -> neu auslesen,
bis die gewünschten kB erreicht sind?

Danke Euch, Jan

  1. Hallo,

    Für gifs wird das sicher schwierig,
    aber sind jpgs vielleicht irgendwie definiert, dass man sagen kann:
    Alle jpgs mit 30000 Bildpunkten (100px x 300px) haben x kB?

    Ich bin zwar nicht sonderlich bewandert auf dem Gebiet, aber ich glaube nicht, dass man an den Bildmaßen pauschal festlegen kann, schließlich kann man bei jpgs die Qualität einstellen, und das wirkt sich auf die Dateigröße aus.

    Gruß
    Paul

  2. Hallo

    gibt es eine Möglichkeit,
    die zu erwartenden Dateigrössen bei Images zu berechnen?

    Lässt sich mit den Dateifunktionen nicht auch die Dateigrösse abfragen?

    Ich möchte ein PHP-Bildgrössenscript programmieren,
    was sich in erster Linie an der Dateigrösse orientiert.
    Bsp.: das File darf max. 14kB haben und grössere Bilder
    möchte ich automatisch proportional kleiner rechnen.

    Vielleicht hilft Dir das weiter:
    http://www.koehntopp.de/php/graphics.html#grafik-verkleinern

    viele Grüsse
    Kerstin

  3. Hi, Jan,

    warum nimmst Du nicht getimagesize?

    http://www.php.net/manual/en/function.getimagesize.php

    Grüße,

    Sebastian

    1. Hi, Jan,

      warum nimmst Du nicht getimagesize?

      http://www.php.net/manual/en/function.getimagesize.php

      Grüße,

      Hi Sebastian,
      das kann leider nur die Pixel (Breite und Höhe).
      Aber Dateigrösse geht nur mit filesize.

      Ich muss wohl mal ein paar Testreihen machen,
      ob die Dateigrösse sich proportional mit der Bilsgrösse ändert.
      Dann könnte ich die grosse datei auslesen und
      mit entsprechenden Berechnungen die neue Höhe/Breite bestimmen.

      Wäre gut, ansonsten fällt mir echt nur:
      Verkleinern -> Speichern -> Auslesen -> Laden -> Verkleinern -> Speichern ...
      ein, bis die gewünschte Grösse ewrreicht ist.

      Danke an Euch alle und Gruss, Jan

      1. Hi, Jan,

        warum nimmst Du nicht getimagesize?
        http://www.php.net/manual/en/function.getimagesize.php

        das kann leider nur die Pixel (Breite und Höhe).
        Aber Dateigrösse geht nur mit filesize.

        Tschuldigung, das meinte ich ja eigentlich:
        http://www.zend.com/manual/function.filesize.php

        Funktioniert das denn nicht?

        Ich muss wohl mal ein paar Testreihen machen,
        ob die Dateigrösse sich proportional mit der Bilsgrösse ändert.
        Dann könnte ich die grosse datei auslesen und
        mit entsprechenden Berechnungen die neue Höhe/Breite bestimmen.

        Die Größe hängt aber auch vom Bildinhalt, vom Format und vom Kompressionsgrad ab.

        Wäre gut, ansonsten fällt mir echt nur:
        Verkleinern -> Speichern -> Auslesen -> Laden -> Verkleinern ->
        Speichern ... ein, bis die gewünschte Grösse ewrreicht ist.

        Das hört sich nicht sehr elegant an ...

        Grüße,

        Sebastian

        1. Verkleinern -> Speichern -> Auslesen -> Laden -> Verkleinern ->
          Speichern ... ein, bis die gewünschte Grösse ewrreicht ist.

          Das hört sich nicht sehr elegant an ...

          Hi Sebastian,
          genau das wäre meine filesize-Lösung ...
          Ich würde aber auch lieber was anderes machen ...

          Grüsse, Jan

  4. Hi,
    gibt es eine Möglichkeit,
    die zu erwartenden Dateigrössen bei Images zu berechnen?

    Meines Wissens gibt es da keine festen Werte. Man kann an Hand von Auflösung und Farbtiefe die maximale Größe ganz grob abschätzen... aber wie das nach der jpg-Kompression aussieht kann man echt nur raten, weil die Komprimierung ja von der Art des Bildes (Motiv etc.) abhängt.
    Was man nach meiner Erfahrung sagen kann ist, daß sozusagen die ersten Prozent Komprimierung die stärkste Verkleinerung der Datei hervorbringen. Ein 1.2 MB großes Bild auf 85% der Qualität reduziert hat dann etwa noch 50kB (also um mehr als die Hälfte kleiner), die Qualität auf 75% gesetzt bringt dann 35 kB Dateigröße. Der Prozeß verläuft also nicht linear.
    Aber wie er verläuft... dafür haben Bildbearbeitungsprogramme ja eine Vorschaufunktion.