Sven Rautenberg: ImageCopyResized() -> Bild zu groß?

Beitrag lesen

Moin!

Das Problem ist die Funktion "ImageCopyResized" .

Die Bilder von meiner Digicam sind zu groß!

Das liegt aber nicht an imagecopyresized(), sondern an der Tatsache, dass die Bilder nicht unkomprimiert in den zur Verfügung gestellten RAM-Speicher des PHP-Skripts passen.

Überschlag' es mal grob: Auflösung in X-Richtung * Auflösung in Y-Richtung * 3 = Speicher in Bytes

Wenn man mal pessimistisch rangeht und 3000*2000 Pixel nimmt (6 Megapixel), braucht so ein Bild schon über 17 Megabyte RAM. Mehr Megapixel brauchen logischerweise noch mehr.

gibt es da ne andere möglichkeit oder andere Funktion ?

PHP ist grundsätzlich nicht gut nutzbar, um riesige Bilder in kleinere Vorschauen umzuwandeln. Wenn man PHP nicht riesige Mengen an potentiell nutzbarem RAM zur Verfügung stellt, kann man das Bilderskalieren sowieso vergessen - abgesehen davon, dass die Methode, die PHP anwendet, alles andere als effizient ist.

Eine gute Idee wäre es, wenn du die Bilder schon direkt lokal auf deinem Rechner so klein machst, dass sie in dieser Größe a) webnutzbar sind und b) von PHP verkleinerbar sind (entscheidend ist dabei nicht die Dateigröße des JPEG, sondern, wie oben vorgerechnet, die entpackte Größe der Pixel). Das spart in jedem Fall Upload-Bandbreite und -Zeit und natürlich Plattenplatz auf dem Server.

Alternativ wäre ImageMagick sicherlich in der Lage, hier einzuspringen, es ist aber keinesfalls zu erwarten, dass es schon auf dem Server installiert ist.

- Sven Rautenberg

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