Hejsan Utan att heller vara speciellt insatt så skulle man väl kunna tänka sig att du först laddar upp alla filer till en temp-katalog, och sen, efter själva uppladdningen går igenom dem en och en och skalar om? borde du inte kunna lösa det med en foreach sats typ:Multipel filuppladdning med Loop (Stora filer)
Har ett litet problem. Håller på att koda ett administrationsgränssnitt där man laddar upp högupplösta bilder, som sedan skalas om till max 640 bred, och max 480 hög.
Problemet är att mitt script är för tungt (och förmodligen inte alls optimalt, då jag är i inlärningsstadiet av PHP). Testkörde tidigare med 10 bilder (ca 3,5-4Mb) och samtliga laddas upp, men bara en skalas om innan minnet tar slut.
Har snackat med webhotellet och det är 64Mb som är max. Mitt script skulle lätt generera ca 400Mb innan allt är klart, därav skulle jag nog behöva lite assistans.
Mitt formulär består av 31 fält. 15 file, 15 text (för bildtexter) och ett för mappnamn. Samtliga file är döpta till "ufile". Filuppladdningen består i sin tur av:
<code>
if($HTTP_POST_FILES['ufile']['size'][1] !==0){
$path2=("../img/nyheter/".$_POST['foldername'].'/'.$HTTP_POST_FILES['ufile']['name'][1]);
copy($HTTP_POST_FILES['ufile']['tmp_name'][1], $path2);
$filename2 = $path2;
$fileout2 = $path2;
$width2 = 640;
$height2 = 480;
header('Content-type: image/jpeg');
list($width_orig2, $height_orig2) = getimagesize($filename2);
$ratio_orig2 = $width_orig2/$height_orig2;
if ($width2/$height2 > $ratio_orig2) {
$width2 = $height2*$ratio_orig2;
} else {
$height2 = $width2/$ratio_orig2;
}
$image_p2 = imagecreatetruecolor($width2, $height2);
$image2 = imagecreatefromjpeg($filename2);
imagecopyresampled($image_p2, $image2, 0, 0, 0, 0, $width2, $height2, $width_orig2, $height_orig2);
imagejpeg($image_p2, $fileout2, 80);}
</code>
Ovanstående process körs då 15 gånger (även koden skrivs 15 gånger) och jag inser att detta är värdelöst och krävande. Det måste ju finnas något sätt att få detta till en Loop. Att den kör samma process för ALLA bilderna jag valt i formuläret.
Alltså
Bild1 laddas upp och skalas om.
Starta om
Bild2 laddas upp och skalas om.
osv.
Är det möjligt att få ner en sådan process till att bli rimligt minneskrävande? Sv: Multipel filuppladdning med Loop (Stora filer)
Sv: Multipel filuppladdning med Loop (Stora filer)
foreach($_FILES['ufile'] as $bild)
{
kod...
}
har inget här som ja kan testa med men något liknande borde funka
då använder du dig av $bild istället för $_FILES['ufile'][1] | ($_HTTP_POST_FILES['ufile'][1])