Stevenking
Well-known member
- 4 Mai 2006
- 88
- 7
Hallo zusammen
Hab ein Problem mit einem teil des scripts...
und zwar wird beim hochladen eines Bildes, geguckt wie groß das Bild ist.
ist es größer als eine festgelegt Größe 200kb dann gibt er
$image_too_big == 1 aus
macht er auch alles bis zu einer bestimmt größe...
nur wenn die Datei größer als 1MB wird gibt es probleme.
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 3200 bytes) in /usr/virtualweb/write_ad.php on line 296
memory_limit ist 32 MB
Ich denke das es an ImageCopyResampled liegt...
er macht ja im klassichen Sinne keine kopie sondern umschreibt das alte Bild...
kennt vielleicht jemand eine bessere möglichkeit?
Was ich festgestellt hab ist, wenn ich denn block rausnehme, hab ich keine Probleme. dann läd er auch Bilder mit 5 MB hoch...
Oder kann ich den teil das Scripts nicht zweimal ausführen?
Weil hab gleich darunter noch mal das ganze für ein Thumbnail. Nur da benennt er das Bild neu... komisch ist das er es immer macht, egal ob das Bild 5MB oder 100KB groß ist.
Hab ein Problem mit einem teil des scripts...
und zwar wird beim hochladen eines Bildes, geguckt wie groß das Bild ist.
ist es größer als eine festgelegt Größe 200kb dann gibt er
$image_too_big == 1 aus
macht er auch alles bis zu einer bestimmt größe...
nur wenn die Datei größer als 1MB wird gibt es probleme.
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 3200 bytes) in /usr/virtualweb/write_ad.php on line 296
memory_limit ist 32 MB
PHP:
if ( $image_too_big == 1) {
switch ($af_size[2]) {
case 1 : $src = ImageCreateFromGif( $af_dir_ads.$adid.$itrail.".".$thispicext); break;
case 2 : $src = ImageCreateFromJpeg( $af_dir_ads.$adid.$itrail.".".$thispicext); break;
case 3 : $src = ImageCreateFromPng( $af_dir_ads.$adid.$itrail.".".$thispicext); break;
}
$width_before = ImageSx( $src);
$height_before = ImageSy( $src);
if ( $width_before >= $height_before) {
$width_new = min(800, $width_before);
$scale = $width_before / $height_before;
$height_new = round( $width_new / $scale);
}
else {
$height_new = min(600, $height_before);
$scale = $height_before / $width_before;
$width_new = round( $height_new / $scale);
}
$dst = ImageCreateTrueColor( $width_new, $height_new);
// GD Lib 2
ImageCopyResampled( $dst, $src, 0, 0, 0, 0, $width_new, $height_new, $width_before, $height_before);
// GD Lib 1
//ImageCopyResized( $dst, $src, 0, 0, 0, 0, $width_new, $height_new, $width_before, $height_before);
switch ($af_size[2]) {
case 1 : ImageGIF( $dst, $af_dir_ads.$adid.$itrail.".".$thispicext); break;
case 2 : ImageJPEG( $dst, $af_dir_ads.$adid.$itrail.".".$thispicext); break;
case 3 : ImagePNG( $dst, $af_dir_ads.$adid.$itrail.".".$thispicext); break;
}
imagedestroy( $dst);
imagedestroy( $src);
}
Ich denke das es an ImageCopyResampled liegt...
er macht ja im klassichen Sinne keine kopie sondern umschreibt das alte Bild...
kennt vielleicht jemand eine bessere möglichkeit?
Was ich festgestellt hab ist, wenn ich denn block rausnehme, hab ich keine Probleme. dann läd er auch Bilder mit 5 MB hoch...
Oder kann ich den teil das Scripts nicht zweimal ausführen?
Weil hab gleich darunter noch mal das ganze für ein Thumbnail. Nur da benennt er das Bild neu... komisch ist das er es immer macht, egal ob das Bild 5MB oder 100KB groß ist.