image resize zonder memory limit te exhausten
woffer
10/01/2009 23:54:00Ik gebruik volgend script om een upgeloade foto te resizen:
Dit scriptje werkte tot voor kort perfect.
Nu probeert een user echter een image te uploaden, maar krijgt een memory limit error. Het gekke is dat dit bestand kleiner is dan de bestanden die ik al eerder heb geupload. Het probleem is dat het aantal pixels veel groter is, waardoor de imagecreatefromjpg()-functie teveel geheugen vraagt van de server.
Mijn server laat geen veranderingen toe in de memory_limit (die staat op 24MB) en heeft geen Imagemagick geïnstalleerd.
Is er een manier om dit te vermijden ? Is er een andere manier van resizen die dit probleem niet heeft (liefst in php)?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$uploadedphoto1 = $_FILES['photo1']['tmp_name'];
$src1 = imagecreatefromjpeg($uploadedphoto1);
$list1 = getimagesize($uploadedphoto1);
$width1 = $list1[0];
$height1 = $list1[1];
$newwidth1 = 300;
$newheight1=($height1/$width1)*300;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);
imagecopyresampled($tmp1,$src1,0,0,0,0,$newwidth1,$newheight1,$width1,$height1);
$extension1 = $_FILES["photo1"]["name"];
$var1 = explode(".", $extension1);
$extension1 = $var1['1'];
$filename1 = "photos/".$idchin.".".$extension1."";
$photo1 = "".$idchin.".".$extension1."";
imagejpeg($tmp1,$filename1,100);
imagedestroy($src1);
imagedestroy($tmp1);
?>
$uploadedphoto1 = $_FILES['photo1']['tmp_name'];
$src1 = imagecreatefromjpeg($uploadedphoto1);
$list1 = getimagesize($uploadedphoto1);
$width1 = $list1[0];
$height1 = $list1[1];
$newwidth1 = 300;
$newheight1=($height1/$width1)*300;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);
imagecopyresampled($tmp1,$src1,0,0,0,0,$newwidth1,$newheight1,$width1,$height1);
$extension1 = $_FILES["photo1"]["name"];
$var1 = explode(".", $extension1);
$extension1 = $var1['1'];
$filename1 = "photos/".$idchin.".".$extension1."";
$photo1 = "".$idchin.".".$extension1."";
imagejpeg($tmp1,$filename1,100);
imagedestroy($src1);
imagedestroy($tmp1);
?>
Dit scriptje werkte tot voor kort perfect.
Nu probeert een user echter een image te uploaden, maar krijgt een memory limit error. Het gekke is dat dit bestand kleiner is dan de bestanden die ik al eerder heb geupload. Het probleem is dat het aantal pixels veel groter is, waardoor de imagecreatefromjpg()-functie teveel geheugen vraagt van de server.
Mijn server laat geen veranderingen toe in de memory_limit (die staat op 24MB) en heeft geen Imagemagick geïnstalleerd.
Is er een manier om dit te vermijden ? Is er een andere manier van resizen die dit probleem niet heeft (liefst in php)?
Gewijzigd op 01/01/1970 01:00:00 door Woffer
Er zijn nog geen reacties op dit bericht.