Bilder hochladen: Ja, wat is dat denn?

Blinddarm

Blinddarm

Mitglied
Thread Starter
Dabei seit
03.01.2006
Beiträge
674
Reaktionspunkte
62
Moin!

Ich habe ein Script geschrieben, das ein upgeloadetes JPG in Empfang nimmt, es auf 200 x 150 verkleinert, einen Rahmen drumherum setzt und ein Wasserzeichen einfügt. Geht.

Aber es funktioniert nicht mit allen JPGs. Ich dachte erst, es läge an der maximal erlaubten Dateigröße. Dann aber fiel mir auf, dass eher die Bildgröße darüber entscheidet, ob ein upgeloadetes Bild verarbeitet wird oder nicht. Ich bin der Sache nachgegangen, habe ein Testbild auf zwei Arten mit einem Grafikprogramm bearbeitet und dann jeweils einen Upload versucht:

a) sehr stark komprimiert, sodass die Dateigröße sehr klein wurde, jedoch mit unveränderter Bildgröße: 360 kb, 2592 x 1944. Funktioniert nicht. :heul:

b) nur leicht komprimiert, Bildgröße jedoch nur halb so groß: 448 kb, 1296 x 972. Funktioniert - obwohl die Dateigröße höher liegt als bei a).

Frage: Gibt es bei der Funktion imagecreatefromjpeg() irgendeine Pixel-Obergrenze oder so? Falls ja, lässt sie sich umgehen? Oder benötige ich eine andere Funktion, um die upgeloadeten Bilder in Empfang zu nehmen?
 
Schau doch mal ins Apache-Log (oder was auch immer du als Webserver benutzt). Ich wette PHP hat zu wenig Speicher. imagecreate...() wird ja intern erst mal ein bitmap draus machen damit es damit arbeiten kann, d.h. es wird schon fein gross so lange es im Speicher hängt.

Falls es daran liegt einfach in der php.ini mehr Speicher zuweisen.

Grüße und guten Rutsch!
Sven
 
Auf Speicher hätte ich jetzt auch zuerst getippt. Evtl. ist es einfacher, das ganze durch ImageMagick verkleinern zu lassen, wenn du das zur Verfügung hast. Damit gehen auch so Sachen wie Bild-Kombinationen. Für den Rahmen würde ich sowieso eher zu CSS tendieren (außer, es soll irgendwas in die Richtung 'fancy' sein)
 
imagecreate...() wird ja intern erst mal ein bitmap draus machen damit es damit arbeiten kann, d.h. es wird schon fein gross so lange es im Speicher hängt.

Das wird's vermutlich sein...

Falls es daran liegt einfach in der php.ini mehr Speicher zuweisen.

Kann man auf die php.ini innerhalb eines PHP-Programms zugreifen, oder muss man das "von Hand" machen?
Blöde Frage, ich weiß, aber ich hab PHP auf meinem Mac nicht installiert, sondern teste auf dem Webserver meines WebspaceProviders (1&1). Und da kann ich offensichtlich garnix einstellen, ich finde nicht mal Error-Logs.

Guten Rutsch wünsch' ich auch! :)
 
mach einfach ne ".htaccess" Datei im UNIX format und schreib dort rein
Code:
php_value memory_limit "16M"
oder eben mehr Memory, bis es funktioniert.

Die Datei schmeisst du in das Verzeichnis wo das Script drin liegt.

Ggf. bekommst du aber nen Fehler bzw. es ändert sich nix, falls 1&1 verbietet das memory limit zu ändern. Dazu kann ich nix sagen...
 
mach einfach ne ".htaccess" Datei im UNIX format und schreib dort rein
Code:
php_value memory_limit "16M"
oder eben mehr Memory, bis es funktioniert.

Die Datei schmeisst du in das Verzeichnis wo das Script drin liegt.

Ggf. bekommst du aber nen Fehler bzw. es ändert sich nix, falls 1&1 verbietet das memory limit zu ändern. Dazu kann ich nix sagen...

Tja, ich bekomme:

Code:
Error 500 - Internal server error

Ein interner Fehler ist aufgetreten!
Bitte versuchen Sie es zu einem späteren Zeitpunkt.

Mist! Dann ist die Sache wohl gestorben, was? :(
 
sieht so aus :) oder mal den trick mit ImageMagick versuchen :) Downsamplen und dann in imagecreate...() schmeissen.

Beste Grüße
 
sieht so aus :) oder mal den trick mit ImageMagick versuchen :) Downsamplen und dann in imagecreate...() schmeissen.

Beste Grüße

Bei hosteurope (wo ich auch noch Webspace hab'), geht's mit der .htaccess-Datei. Na also!

Beste Grüße & gut rutschen...:)
 
Bei 1und1 kannst du eine datei php.ini in dein Documentroot-Verzeichnis legen, in der steht einfach nur der Wert, den du überschreiben willst, also: memory_limit = 16M
 
Zurück
Oben Unten