ImageCopyResized() -> Bild zu groß?
Nemesis
- php
0 LX0 Sven Rautenberg0 Nemesis
Ich habe eine Galarie erstellt die mit vorschaubildern arbeitet
Das Problem ist die Funktion "ImageCopyResized" .
Die Bilder von meiner Digicam sind zu groß!
gibt es da ne andere möglichkeit oder andere Funktion ?
Du könntest als Fallback imagemagick verwenden; Ansonsten funktioniert vielleicht ImageCopyResampled.
Gruß, LX
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
Danke ich habe es jetzt so gelöst das die verarbeiteten bilder zwischenengespeichert werden somit muss er die nur einmal erstellen und php muss nicht jedes mal stunden rechnen.
vielen dank für die schnelle antwort.