08. april 2004 - 18:13
Der er
20 kommentarer og 1 løsning
Allowed memory size of 8388608 ?
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 6528 bytes) in /usr/home/web/web22474/image_resize.php on line 18 Jeg får den her når jeg uploader en fil via. et script til min side. (jeg har web10.com webhotel) Hvis filerne ikke fylder særlig meget, kan man godt uploade, men den gider ikke tage alle filer der f.eks fylder 80kbs :( selve image-resize.php som den brokker sig over ser sådan her ud: <?php function image_resize($sourcefile,$maxwidth,$maxheight,$destinationfile=false) { $types=Array(); $types[1]='gif'; $types[2]='jpeg'; $types[3]='png'; $types[6]='wbmp'; list($width,$height,$type)=getimagesize($sourcefile); $type_name=$types[$type]; $imagecreatefromtype='imagecreatefrom'.$type_name; $imagetype='image'.$type_name; if(!function_exists($imagecreatefromtype) || !function_exists($imagetype)) { return false; } if($img_src=$imagecreatefromtype($sourcefile)) { $ratio_height=$maxheight/$height; $ratio_width=$maxwidth/$width; $ratio=min($ratio_width,$ratio_height); $newwidth=$width*$ratio; $newheight=$height*$ratio; $img_dst=imagecreatetruecolor($newwidth,$newheight); // $img_dst=imagecreate($newwidth,$newheight); imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); // imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); if($destinationfile==false) { //header("Content-type: image/jpeg"); $imagetype($img_dst); } else $imagetype($img_dst,$destinationfile); imagedestroy($img_dst); return true; } else { return false; } } ?> linie 18 er: if($img_src=$imagecreatefromtype($sourcefile)) Ved ikke om der er brug for upload formsne også, ellers hvis der er så skriv =)
Annonceindlæg tema
Cloud & AI
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.
09. april 2004 - 04:48
#1
Det er måske din GD lib der fejler. GD kan ikke tage billeder der er større end 1200x1200 pixels.
09. april 2004 - 06:11
#2
Det lyder sandsynligt... :D Jeg vil køre nogle tests i aften, og vende tilbage med svar om det er det... (vil vil jeg i hvert fald gå i seng, zZzZzz)
09. april 2004 - 12:44
#3
Det er PHP der "fejler", da du sandsynligvis har sagt i din php.ini at den max må bruge 8 megabyte (default setting): I din php.ini har du en linje: memory_limit = 8M Prøv at sætte denne op til 12M eller mere.
09. april 2004 - 18:06
#4
gnu du havde ret. Jeg testede det igennem med det samme billede i op til 800KB størelse, og der var intet problem når jeg resizer det til 1200x900. Så problemet er ikke større end at jeg må oplyse brugerne om at det ikke kan være større end disse dimintioner =)
09. april 2004 - 18:13
#5
Forresten: the-gnu.dk, kan man lave et tjek for dette i sit script? Lidt irrierterende hvis folk smider noget op men den ikke gemmer det, for den smider nemlig info i databasen aligevel...
09. april 2004 - 18:39
#6
if(true == $img_src=$imagecreatefromtype($sourcefile)) { query.............
09. april 2004 - 18:59
#7
gnu: jeg har aldrig hørt at gd har en brgrænsning (udover hukommelsen) på antal pixels den arbejder med. Har du en reference? blaatand: prøv evt at lave et billede i to farver, 2000x2000 px og se om det virker (jeg har ikke selv gd installeret) ?
09. april 2004 - 19:21
#8
2 farver i 2000x2000 giver samme fejl. billede fyldte ikke over 50 kb (47kb tror jeg)
09. april 2004 - 19:25
#9
Tak. Du fik dit problem løst :) Jeg undre mig bare over at de skulle have lagt sådan en begrænsning ind (og tvivler på det).
09. april 2004 - 19:27
#10
Det er lidt irrierterende, men jeg overlever =)
10. april 2004 - 14:03
#11
Ja, det er noget værre lort. Jeg har ingen reference, men det var noget jeg fandt på google efter at have siddet 4 timer og bøvlet med GD. Et alternativ kunne være at bruge imagemagick. Du kan evt. checke først: $size = getimagesize($img); if($size[0] > 1200 || $size[1] > 1200) error else bla bla
10. april 2004 - 17:47
#12
Mener du således her: <?php $size = getimagesize($img); if($size[0] > 1200 || $size[1] > 1200){ echo "Fejl: Filen er ikke mindre end 1200x1200"; } { function image_resize($sourcefile,$maxwidth,$maxheight,$destinationfile=false) { $types=Array(); $types[1]='gif'; $types[2]='jpeg'; $types[3]='png'; $types[6]='wbmp'; list($width,$height,$type)=getimagesize($sourcefile); $type_name=$types[$type]; $imagecreatefromtype='imagecreatefrom'.$type_name; $imagetype='image'.$type_name; if(!function_exists($imagecreatefromtype) || !function_exists($imagetype)) { return false; } if($img_src=$imagecreatefromtype($sourcefile)) { $ratio_height=$maxheight/$height; $ratio_width=$maxwidth/$width; $ratio=min($ratio_width,$ratio_height); $newwidth=$width*$ratio; $newheight=$height*$ratio; $img_dst=imagecreatetruecolor($newwidth,$newheight); // $img_dst=imagecreate($newwidth,$newheight); imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); // imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); if($destinationfile==false) { //header("Content-type: image/jpeg"); $imagetype($img_dst); } else $imagetype($img_dst,$destinationfile); imagedestroy($img_dst); return true; } else { return false; } } }; ?>
10. april 2004 - 17:47
#13
hov mangler lige en else
10. april 2004 - 18:22
#14
Det kører ikke rigtig i hvert fald :(
10. april 2004 - 18:30
#15
Er det dette du prøver? <?php $size = getimagesize($img); if($size[0] > 1200 || $size[1] > 1200){ echo "Fejl: Filen er ikke mindre end 1200x1200"; } else { image_resize(..); } function image_resize($sourcefile,$maxwidth,$maxheight,$destinationfile=false) { $types=Array(); ... ?>
10. april 2004 - 18:33
#16
err, ser sådan ud ja =) hvad er den image_resize(..); der?
10. april 2004 - 20:13
#17
Det er den funktion du selv har lavet. Ideen er, test om billedet er mindre end 1200x1200, hvis den ikke er - lav fejl, ellers brug funktionen (som så helst burde virke med billeder undre 1200x1200)
10. april 2004 - 23:14
#18
image-resize filen: <?php $size = getimagesize($img); if($size[0] > 1200 || $size[1] > 1200){ echo "Fejl: Filen er ikke mindre end 1200x1200"; } else { function image_resize($sourcefile,$maxwidth,$maxheight,$destinationfile=false) { $types=Array(); $types[1]='gif'; $types[2]='jpeg'; $types[3]='png'; $types[6]='wbmp'; list($width,$height,$type)=getimagesize($sourcefile); $type_name=$types[$type]; $imagecreatefromtype='imagecreatefrom'.$type_name; $imagetype='image'.$type_name; if(!function_exists($imagecreatefromtype) || !function_exists($imagetype)) { return false; } if($img_src=$imagecreatefromtype($sourcefile)) { $ratio_height=$maxheight/$height; $ratio_width=$maxwidth/$width; $ratio=min($ratio_width,$ratio_height); $newwidth=$width*$ratio; $newheight=$height*$ratio; $img_dst=imagecreatetruecolor($newwidth,$newheight); // $img_dst=imagecreate($newwidth,$newheight); imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); // imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); if($destinationfile==false) { //header("Content-type: image/jpeg"); $imagetype($img_dst); } else $imagetype($img_dst,$destinationfile); imagedestroy($img_dst); return true; } else { return false; } } }; ?> Filen med forms n'shit: <?php $max_fil_storelse = "100000"; // i bytes $billede_max_bredde = "1200"; // I pixels $billede_max_hojde = "1200"; // Også i pixels $fil_path = $_SERVER['DOCUMENT_ROOT'] . "/screenshots"; require($_SERVER['DOCUMENT_ROOT'] . "/image_resize.php"); require($_SERVER['DOCUMENT_ROOT'] . "/conn.php"); function form() { global $max_fil_storelse; $action = $_SERVER['PHP_SELF']; ?> <table width="95%" border="0" align="center" cellpadding="0" cellspacing="0" class="site-tekst"> <tr> <td height="75" valign="middle"><form method="post" action="<? echo $action ?>" enctype="multipart/form-data"> <p>Din kommentar til billedet (udfyld venligst).<br> <textarea name="comment" cols="59" rows="10" class="site-forms-standard" ></textarea> <br> Fil : <input name="filen" type="file" class="site-forms-standard" size="37"> *Max dimentioner på 1200x900!</p> <p>Billede kategori: <select name="kategori" class="site-forms-standard" id="kategori"> <option value="1">Generelle screenshots</option> <option value="2">Scores</option> <option value="3">War screenshots</option> <option value="4">Cheaters cought in action</option> <option value="5">Diverse screenshots</option> <option value="6">Screenshots fra andre spil</option> </select> </p> <p> bruger: <input name="forfatter" type="text" class="form-standard-gray" id="forfatter" onclick="java script:alert('Du kan ikke ændre brugernavnet!');this.blur();" value="<?php print_r($_SESSION['username']);?>"> <br> <br> <input name="submit_fil" type="submit" class="form-button-standard" value="Upload"> <input name="B2" type="reset" class="form-button-standard" value="Slet alt"> </p> </form></td> </tr> <tr> <td>Kun brugere her på siden har rettighed til at se billederne!</td> </tr> <tr> <td> </td> </tr> <tr> <td><a href="screenshots.php?show=index" target="_top" class="10-bold-blue"><< Tilbage til screenshot index</a> |</td> </tr> </table> <?php } function upload() { ?> <?php global $fil_path, $vare_id; $user_id = $_SESSION["user_id"]; $fil_path_temp = $fil_path . "/temp/" . $_FILES['filen']['name']; if(!eregi(".jpg$|.jpeg$", $fil_path_temp)) { $error = "Det er ikke en jpg fil !"; } if ($error) { echo $error; form(); } else { # nice, vi kan fortsætte if (!@copy($_FILES['filen']['tmp_name'],$fil_path_temp)) { echo $_FILES['filen']['tmp_name']; echo "<br>"; echo $fil_path; echo "\n<b>Tag dig sammen hehe!</b>"; form(); } else { //image_resize($fil_path_temp, 300, 1000, $fil_path_temp); $comment = $_POST["comment"]; $kategori = $_POST["kategori"]; $bruger_id = $_SESSION["user_id"]; mysql_query("INSERT INTO screenshots (bruger_id, kommentar, kategori, dato) values ('$bruger_id', '$comment', '$kategori', NOW())"); $id = mysql_insert_id(); $endeligt_navn = $fil_path . "/" . $id . ".jpg"; $endeligt_thumb_navn = $fil_path . "/tn" . $id . ".jpg"; rename($fil_path_temp, $endeligt_navn); image_resize($endeligt_navn, 164, 123, $endeligt_thumb_navn); $fraurl = $_SERVER['HTTP_REFERER']; echo "<span class=\"site-tekst\">Screenshot tilføjet til databasen!</a><br><br>"; echo "<a href=\"screenshots.php?show=index\" class=\"10-bold-blue\" target=\"_top\"><< Tilbage til screenshots index!</a>"; } } ?> <?php } ### Start koden #### if (isset($_REQUEST['submit_fil'])) { upload(); }else{ form(); } ?>
11. april 2004 - 17:43
#19
<?php $size = getimagesize($img); if($size[0] > 1200 || $size[1] > 1200){ echo "Fejl: Filen er ikke mindre end 1200x1200"; } else { function image_resize($sourcefile,$maxwidth,$maxheight,$destinationfile=false) { $types=Array(); $types[1]='gif'; $types[2]='jpeg'; $types[3]='png'; $types[6]='wbmp'; list($width,$height,$type)=getimagesize($sourcefile); $type_name=$types[$type]; $imagecreatefromtype='imagecreatefrom'.$type_name; $imagetype='image'.$type_name; if(!function_exists($imagecreatefromtype) || !function_exists($imagetype)) { return false; } if($img_src=$imagecreatefromtype($sourcefile)) { $ratio_height=$maxheight/$height; $ratio_width=$maxwidth/$width; $ratio=min($ratio_width,$ratio_height); $newwidth=$width*$ratio; $newheight=$height*$ratio; $img_dst=imagecreatetruecolor($newwidth,$newheight); // $img_dst=imagecreate($newwidth,$newheight); imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); // imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); if($destinationfile==false) { //header("Content-type: image/jpeg"); $imagetype($img_dst); } else $imagetype($img_dst,$destinationfile); imagedestroy($img_dst); return true; } else { return false; } } } ?>
11. april 2004 - 17:44
#20
<?php $size = getimagesize($img); if($size[0] > 1200 || $size[1] > 1200){ echo "Fejl: Filen er ikke mindre end 1200x1200"; } else { $types=Array(); $types[1]='gif'; $types[2]='jpeg'; $types[3]='png'; $types[6]='wbmp'; list($width,$height,$type)=getimagesize($sourcefile); $type_name=$types[$type]; $imagecreatefromtype='imagecreatefrom'.$type_name; $imagetype='image'.$type_name; if(!function_exists($imagecreatefromtype) || !function_exists($imagetype)) { return false; } if($img_src=$imagecreatefromtype($sourcefile)) { $ratio_height=$maxheight/$height; $ratio_width=$maxwidth/$width; $ratio=min($ratio_width,$ratio_height); $newwidth=$width*$ratio; $newheight=$height*$ratio; $img_dst=imagecreatetruecolor($newwidth,$newheight); // $img_dst=imagecreate($newwidth,$newheight); imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); // imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); if($destinationfile==false) { //header("Content-type: image/jpeg"); $imagetype($img_dst); } else $imagetype($img_dst,$destinationfile); imagedestroy($img_dst); return true; } else { return false; } } ?> Sådan tror jeg.
11. april 2004 - 22:25
#21
Fatal error: Call to undefined function: image_resize() in /usr/home/web/web22474/screenshot-upload.php on line 191 :(
Vi tilbyder markedets bedste kurser inden for webudvikling