//kopiér og resize kildebilledet over i det nye billede ImageCopyResampled($dst_img,$src_img,0,0,0,0,$width,$height,ImageSX($src_img),ImageSY($src_img));
//lav output til mappen ImageJpeg($dst_img, "./filer/billeder/thumbnail/" . $til);
//hvis bredden ikke er over 200px } else {
//åbn kildebilledet og lav output $src_img=ImageCreateFromJpeg("$image"); ImageJpeg($src_img, $til); };
//sæt url'en til billedet $imgurl = "./filer/billeder/thumbnail/" . $til; } ?> Functionen kaldes i en for løkke hvor filer fra en form uploades. Functionen kaldes først når original billedet er uploadet. Hvis I vil have hele scriptet med, så lad mig høre, så får I bare det
Jeg går ud fra at $til er navnet på billedet, og du derfor ikke har åbnet billedet, før du førsøger at hente størrelsen på det. Det er nok der du får fejlen. Prøv at åbne billedet før du kører getimagesize:
Jeg poster lige koden hvor functionen kaldes, så kan du se hvad $til er og om det er en forkert variable jeg bruger - altså om jeg hellere skal bruge $fra
Og dog, hvis billedet bliver flyttet i funktionen move_uploaded_file, skulle det jo virke fint nok. Får du billedet ind i den ønskede mappe ($til) i fuld størrelse?
Ja jeg får billedet ind i original størrelsen i den rette mappe, og selvom jeg har ændret er der ingen forskel - stadig ingen billede i thumb størrelse
hvordan ser mappestrukturen ud? problemet kunne ligge i at du placerer filen her: ./filer/billeder/thumbnail/$konfiguration['upload_bibliotek'].$id.'-'.$_FILES['fil']['name'][$i]
//kopiér og resize kildebilledet over i det nye billede ImageCopyResampled($dst_img,$src_img,0,0,0,0,$width,$height,ImageSX($src_img),ImageSY($src_img));
//lav output til mappen ImageJpeg($dst_img, $imgurl.$image[count($image)-1]);
//hvis bredden ikke er over 200px } else {
//åbn kildebilledet og lav output $src_img=ImageCreateFromJpeg($til); ImageJpeg($src_img, $til); } }
Ikke fordi du ikke må få dine point - dem skal du nok få, men jeg er stødt ind i et lille problem. Hvis jeg uploader et billede som er omkring 1 MB så går det galt - har debug'et lidt og fundet frem til at det er denne linie der går galt $src_img=ImageCreateFromJpeg($til); Så vidt jeg kan se så er det altså fordi den ikke kan åbne filen til at lave den nye ud fra at den går i stå. Igen kommer der ingen fejl, men den stopper bare og laver en blank side - tror du måske du kan være behjælpelig med en løsning?
Det er fordi du overskrider den allokerede hukommelse på din side. Du kan ændre størrelsen i php.ini eller med ini_set. Det er værdien memory_limit du skal pille i
det jeg kan se er at memory_limit står til 16 MB, så kan det virkelig være det? Jeg har hjemmesiden hosted ved one.com så jeg er ikke sikker på at jeg kan pille ved noget - eller jeg ved i hvert fald ikke hvordan
Det kan det sagtens være, for det er jo ikke kun billedets størrelse som jpeg der tæller. Hvis du fx åbner billedet i et program som Corel, kan du se hvor meget hukommelse billedet optager, og det er tit mange gange større end filstørrelsen. Jeg ved ikke hvad begrænsningerne er på one.com, men det kan du jo høre dem om (php skal compiles med --enable-memory-limit for at du selv kan ændre den). Men du kan evt prøve at uploade mindre billeder (fx 800x600 eller noget i den stil) og se, om det ikke bliver bedre af det?!?
Du skulle kunne bruge nedenstående til at sætte en ny hukommelsesstørrelse (såfrem der er åbner for at du kan ændre i hukommelsesallokeringen):
function setMemoryForImage($filename) { $imageInfo = getimagesize($filename); $MB = 1048576; // number of bytes in 1M $K64 = 65536; // number of bytes in 64K $TWEAKFACTOR = 1.5; // Or whatever works for you $memoryNeeded = round( ( $imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $imageInfo['channels'] / 8 + $K64 ) * $TWEAKFACTOR ); //ini_get('memory_limit') only works if compiled with "--enable-memory-limit" also //Default memory limit is 8MB so well stick with that. //To find out what yours is, view your php.ini file. $memoryLimitMB = 8; $memoryLimit = $memoryLimitMB * $MB; if (function_exists('memory_get_usage') && memory_get_usage() + $memoryNeeded > $memoryLimit) { $newLimit = $memoryLimitMB + ceil( ( memory_get_usage() + $memoryNeeded - $memoryLimit ) / $MB ); ini_set( 'memory_limit', $newLimit . 'M' ); return true; } else { return false; } }
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.