Memory size while resizing

Status
Niet open voor verdere reacties.

zodiak

Gebruiker
Lid geworden
9 okt 2008
Berichten
241
hallo,

mijn hoster is one.com en wanneer ik foto's upload van bv 2.5mb en die tijdens het uploaden resize naar 400px op 400px dan werkt dit niet. wanneer ik foto's upload onder de 2mb dan lukt dat wel.

volgens one.com kunnen zij dit niet aanpassen in hun server want zij staan 12mb toe en ik zou volgens hen tijdens het resizen aan 32MB komen.

kan ik hier zelf iets voor aanpassen dat het wel lukt? heeft hier iemand ervaring mee?

hier is het script:
submit.php
PHP:
<?php ini_set("memory_limit", "12000000"); // for large images so that we do not get "Allowed memory exhausted"
// upload the file
if ((isset($_POST["submitted_form"])) && ($_POST["submitted_form"] == "image_upload_form")) {

    // file needs to be jpg,gif,bmp,x-png and 2.5 MB max
    if (($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg" || $_FILES["image_upload_box"]["type"] == "image/gif" || $_FILES["image_upload_box"]["type"] == "image/x-png") && ($_FILES["image_upload_box"]["size"] < 2500000))
    {


        // some settings
        $max_upload_width = 2590;
        $max_upload_height = 2000;

        // if user chosed properly then scale down the image according to user preferances
        if(isset($_REQUEST['max_width_box']) and $_REQUEST['max_width_box']!='' and $_REQUEST['max_width_box']<=$max_upload_width){
            $max_upload_width = $_REQUEST['max_width_box'];
        }
        if(isset($_REQUEST['max_height_box']) and $_REQUEST['max_height_box']!='' and $_REQUEST['max_height_box']<=$max_upload_height){
            $max_upload_height = $_REQUEST['max_height_box'];
        }


        // if uploaded image was JPG/JPEG
        if($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg"){
            $image_source = imagecreatefromjpeg($_FILES["image_upload_box"]["tmp_name"]);
        }
        // if uploaded image was GIF
        if($_FILES["image_upload_box"]["type"] == "image/gif"){
            $image_source = imagecreatefromgif($_FILES["image_upload_box"]["tmp_name"]);
        }
        // BMP doesnt seem to be supported so remove it form above image type test (reject bmps)
        // if uploaded image was BMP
        if($_FILES["image_upload_box"]["type"] == "image/bmp"){
            $image_source = imagecreatefromwbmp($_FILES["image_upload_box"]["tmp_name"]);
        }
        // if uploaded image was PNG
        if($_FILES["image_upload_box"]["type"] == "image/x-png"){
            $image_source = imagecreatefrompng($_FILES["image_upload_box"]["tmp_name"]);
        }


        $remote_file = "fotos/".$_FILES["image_upload_box"]["name"];
        imagejpeg($image_source,$remote_file,100);
        chmod($remote_file,0644);



        // get width and height of original image
        list($image_width, $image_height) = getimagesize($remote_file);

        if($image_width>$max_upload_width || $image_height >$max_upload_height){
            $proportions = $image_width/$image_height;

            if($image_width>$image_height){
                $new_width = $max_upload_width;
                $new_height = round($max_upload_width/$proportions);
            }
            else{
                $new_height = $max_upload_height;
                $new_width = round($max_upload_height*$proportions);
            }


            $new_image = imagecreatetruecolor($new_width , $new_height);
            $image_source = imagecreatefromjpeg($remote_file);

            imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height);
            imagejpeg($new_image,$remote_file,100);

            imagedestroy($new_image);
        }

        imagedestroy($image_source);


        header("Location:_foto.php?upload_message=Foto succesvol verstuurd &upload_message_type=success&show_image=".$_FILES["image_upload_box"]["name"]);
        exit;
    }
    else{
        header("Location:_foto.php?upload_message=make sure the file is jpg, gif or png and that is smaller than 2.5MB&upload_message_type=error");
        exit;
    }
}
$html = '';
if(isset($_REQUEST['upload_message'])){
    $html .= '<div class="upload_message_error'.$_REQUEST['upload_message_type'].'">';
    $html .= htmlentities($_REQUEST['upload_message']);
    $html .= '</div>';
}


$html .= '<form action="_foto.php" method="post" enctype="multipart/form-data" name="image_upload_form" id="image_upload_form" style="margin-bottom:0px;">
<label>Fotos mogen maximum 2MB zijn en het bestandsformaat mag jpg, gif of png zijn:</label><br />
<input name="image_upload_box" type="file" id="image_upload_box" size="40" />
<input type="submit" name="submit" value="Upload foto" />
<br />
<br />
<label>&nbsp;</label>
<br />
<input name="max_width_box" type="hidden" id="max_width_box" value="448" size="4">
<input name="max_height_box" type="hidden" id="max_height_box" value="336" size="4">
<br />
<br />
<p>
<strong>Voorbeeld:</strong><br />
</p>
<input name="submitted_form" type="hidden" id="submitted_form" value="image_upload_form" />
</form>';
if(isset($_REQUEST['show_image']) and $_REQUEST['show_image']!=''){
    $html .= '<p>';
    $html .= '<img src="fotos/'.$_REQUEST['show_image'].'" />';
    $html .= '</p>';
}
?>

alvast bedankt
 
In je eerste regel (ini_set("memory_limit", "12000000");) zet je hoeveel geheugen de uitvoering van dit script mag gebruiken. 12 000 000 byte = ong. 12 000 kb = ong 12 mb, dus als je deze zou verhogen zou het beter moeten gaan ;)
 
In je eerste regel (ini_set("memory_limit", "12000000");) zet je hoeveel geheugen de uitvoering van dit script mag gebruiken. 12 000 000 byte = ong. 12 000 kb = ong 12 mb, dus als je deze zou verhogen zou het beter moeten gaan ;)

nope , ik had deze eerst op 200000000 staan en dat lukte niet en daarom had ik contact opgenomen met hen en zij zijden dat ze max 12mb toestaan

kan ik dat niet omzielen?
 
je kan aan je hoster vragen of die in php.ini de waarde wil verhogen, of anders kan je zoiets proberen als het bestand gewoon opslaan, en via de commandline een commando geven om hem te resizen (alleen ik heb geen idee hoe dat moet, ben niet echt een linux kenner zegmaar)
 
je kan aan je hoster vragen of die in php.ini de waarde wil verhogen, of anders kan je zoiets proberen als het bestand gewoon opslaan, en via de commandline een commando geven om hem te resizen (alleen ik heb geen idee hoe dat moet, ben niet echt een linux kenner zegmaar)

zij willen dit niet aanpassen . ik had gehoopt dat ik dat ergens kon over rulen met een commando of zo.
 
Nee, de hoster is de baas (obviously en gelukkig) en als die zegt 12, dan is het 12.

Vrees dat het lastig wordt; het grootste deel van dat gebruikte geheugen zit waarschijnlijk in imagecreate om het bron plaatje in te laden, en daar kun je niet echt omheen.

Waarschijnlijk moet je naar een host gaan die meer geheugen toestaat :(
 
Nee, de hoster is de baas (obviously en gelukkig) en als die zegt 12, dan is het 12.

Vrees dat het lastig wordt; het grootste deel van dat gebruikte geheugen zit waarschijnlijk in imagecreate om het bron plaatje in te laden, en daar kun je niet echt omheen.

Waarschijnlijk moet je naar een host gaan die meer geheugen toestaat :(

ok thanks
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan