hej jeg har har godt forstand på resize af billeder (skulle jeg mene). Men nu har jeg "pludseligt" fået dette problem:
Fatal error: Allowed memory size of 8388608 bytes exhausted at (null):0 (tried to allocate 8188 bytes) in /net/users/a37/699/basewebdk/www/cms/createForms.php on line 280
resize script ser sådan ud: function reSizeImage($imageDir, $imageName, $renamedImage, $maxWidth, $maxHeight, $quality){
//Create thumb dependent of image type //Currently only *.JPG is supported list($filename, $ext) = explode(".", $imageDir.$imageName); if($ext == "jpg"){ //Create a image in buffer from source image $src_img = imagecreatefromjpeg($imageDir.$imageName);
//Create destination image in buffer with correct dimensions $dst_img = imagecreatetruecolor($newWidth,$newHeight); //linie 280
//Copy the image from source to destination imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); imagejpeg($dst_img, $imageDir.$renamedImage, $quality);
//Destroy the buffers imagedestroy($src_img); imagedestroy($dst_img);
}else{ echo '<script type="text/javascript">uploadWin = window.open("uploadAlert.php?closeWin=2","uploadWin", "width=500, height=200");</script>'; error("Forkert filtype. Det er kun muligt at uploade billeder af filtypen *.jpg"); }
return true; }
er der nogen der lige sidder med svaret eller kender et resize script, der bare VIRKER ?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
max_execution_time = 8000 ; Maximum execution time of each script, in seconds memory_limit = 8M ; Maximum amount of memory a script may consume (8MB) </snip>
razor> jo jeg forstår godt noget af det. max_memory size er sat til 8M og der resizes skal der åbenbart allokeres mere hukommelse end de 8M.
el_barto> helt korrekt billedet er IKKE over 8MB (det er omkring 0,6 MB). Tilgengæld ER billedet 1535 / 2027 pixels. Hvad har det af betydning ?
tipsen> 8M memory burde være nok ;-)
Til alle> Det er jo ikke ved upload proceduren det går galt. Det er når billedet skal skaleres ? /raz
Synes godt om
Slettet bruger
28. oktober 2003 - 13:44#6
Problemet (tror jeg) er at GDLib arbejder med billedet uden kompression, og du kan selv prøve at oprette et billede i Photoshop der er 1535 x 2027 det fylder 8.9 MB i hukommelsen. Uanset om der er fyldt noget i det.
el_barto> Det interessante er at jeg laver to resize, først kalder jeg resize funktionen og sætter billedet ned til 510 / 369 px. Det går fint. Dernæst kalder jeg resize funktionen igen og vil nu gerne sætte det ned til 150 / 100 og her går det galt.
Jeg kan ikke sætte memory limit op, da jeg ikke styrer php.ini
jamen I havde da ret omkring at der ikke kunne allokeres nok hukommelse. Efter at have prøvet at klare problemet ved diverse ændringer i koden fik jeg endda mistanke til at el_barto havde ret omkring at GD Lib arbejder med billedet uden kompression og eftersom et jpeg billede der skal overholde standarden for presse billeder ( kvalitet 8/9 300 ppi 13x18 cm ) ganske rigtigt er på omkring de 8 MB ukomprimeret sååååå.
Og hvad endte så alt dette ud med. Det endte ud med at jeg fandt en måde (endda lovlig) at omgå memory_limit på. Nemlig er jeg så heldig at afvikle web på en Apache og her har man jo den dejlige .htaccess at arbejde med. Derfor smider man dette i en .htaccess i det bib, der indeholder scriptet med resize-funktionen:
php_value memory_limit 30M
herved sætter man lige memory op med 22 MB. Jeg har ingen ide om hvor meget det er nødvendigt at sætte limit til og jeg har heller ingen ide om hvad det har af andre bivirkninger. Så hvis der er nogen her der er stærke i Memory allokering under scripts afviklet på Apache så si' endeligt til,..... ;-)
/raz
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.