image resizing does not work for large size images

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • mishrarajesh44
    New Member
    • Nov 2007
    • 23

    image resizing does not work for large size images

    hii all,
    I am facing a problem currently..
    i have a script for image uploading and resizing..

    the image uploading takes place properly for every size images..
    but, the resizing works for only small sized iamages..
    for eg. resizing takes place for 70 kb sized images but fails for 600kb or more..
    my code is below..

    [code=php]

    <?php
    $idir = "images/photo/"; // Path To Images Directory
    $tdir = "images/photo/thumbs/"; // Path To Thumbnails Directory
    $twidth = "125"; // Maximum Width For Thumbnail Images
    $theight = "100"; // Maximum Height For Thumbnail Images

    if (!isset($_GET['subpage'])) { // Image Upload Form Below ?>
    <form method="post" action="addphot o.php?subpage=u pload" enctype="multip art/form-data">
    File:<br />
    <input type="file" name="imagefile " class="form">
    <br /><br />
    <input name="submit" type="submit" value="Sumbit" class="form"> <input type="reset" value="Clear" class="form">
    </form>
    <? } else if (isset($_GET['subpage']) && $_GET['subpage'] == 'upload') { // Uploading/Resizing Script
    $url = $_FILES['imagefile']['name']; // Set $url To Equal The Filename For Later Use
    if ($_FILES['imagefile']['type'] == "image/jpg" || $_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg") {
    $file_ext = strrchr($_FILES['imagefile']['name'], '.'); // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php
    $copy = copy($_FILES['imagefile']['tmp_name'], "$idir" . $_FILES['imagefile']['name']); // Move Image From Temporary Location To Permanent Location
    if ($copy) { // If The Script Was Able To Copy The Image To It's Permanent Location
    print 'Image uploaded successfully.<b r />'; // Was Able To Successfully Upload Image
    $simg = imagecreatefrom jpeg("$idir" . $url); // Make A New Temporary Image To Create The Thumbanil From
    $currwidth = imagesx($simg); // Current Image Width
    $currheight = imagesy($simg); // Current Image Height
    if ($currheight > $currwidth) { // If Height Is Greater Than Width
    $zoom = $twidth / $currheight; // Length Ratio For Width
    $newheight = $theight; // Height Is Equal To Max Height
    $newwidth = $currwidth * $zoom; // Creates The New Width
    } else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height)
    $zoom = $twidth / $currwidth; // Length Ratio For Height
    $newwidth = $twidth; // Width Is Equal To Max Width
    $newheight = $currheight * $zoom; // Creates The New Height
    }
    $dimg = imagecreate($ne wwidth, $newheight); // Make New Image For Thumbnail
    imagetruecolort opalette($simg, false, 256); // Create New Color Pallete
    $palsize = ImageColorsTota l($simg);
    for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image
    $colors = ImageColorsForI ndex($simg, $i); // Number Of Colors Used
    ImageColorAlloc ate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use
    }
    imagecopyresize d($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It)
    imagejpeg($dimg , "$tdir" . $url); // Saving The Image
    imagedestroy($s img); // Destroying The Temporary Image
    imagedestroy($d img); // Destroying The Other Temporary Image
    print 'Image thumbnail created successfully.'; // Resize successful
    } else {
    print '<font color="#FF0000" >ERROR: Unable to upload image.</font>'; // Error Message If Upload Failed
    }
    } else {
    print '<font color="#FF0000" >ERROR: Wrong filetype (has to be a .jpg or .jpeg. Yours is '; // Error Message If Filetype Is Wrong
    print $file_ext; // Show The Invalid File's Extention
    print '.</font>';
    }
    }
    ?>
    [/code]


    when resizing doesnot work no message appers on screen..
    please find the problem in my script , any suggessions to modify script..

    thanks...
  • coffear
    New Member
    • Nov 2007
    • 20

    #2
    try putting the following at the top of your script:-

    [PHP]error_reporting (E_ALL);[/PHP]

    It is possible that you are running out of memory when trying to resize.

    Comment

    • mishrarajesh44
      New Member
      • Nov 2007
      • 23

      #3
      Originally posted by coffear
      try putting the following at the top of your script:-

      [PHP]error_reporting (E_ALL);[/PHP]

      It is possible that you are running out of memory when trying to resize.
      i hav added your statement at the top, but the same thing..no message..
      no resizing..only upload takes place..
      any other suggesions..
      thanks...

      Comment

      • mishrarajesh44
        New Member
        • Nov 2007
        • 23

        #4
        Originally posted by coffear
        try putting the following at the top of your script:-

        [PHP]error_reporting (E_ALL);[/PHP]

        It is possible that you are running out of memory when trying to resize.
        hii,
        i am adding another information which may help u find my fault..

        i hav increased the thumbnail size thinking that resizing extend will reduce..

        now i am getting error message..


        my code:
        [code=php]
        <?php
        error_reporting (E_ALL);
        $idir = "images/photo/"; // Path To Images Directory
        $tdir = "images/photo/thumbs/"; // Path To Thumbnails Directory
        $twidth = "1100"; // Maximum Width For Thumbnail Images
        $theight = "650"; // Maximum Height For Thumbnail Images

        if (!isset($_GET['subpage'])) { // Image Upload Form Below ?>
        <form method="post" action="addphot o.php?subpage=u pload" enctype="multip art/form-data">
        File:<br />
        <input type="file" name="imagefile " class="form">
        <br /><br />
        <input name="submit" type="submit" value="Sumbit" class="form"> <input type="reset" value="Clear" class="form">
        </form>
        <? } else if (isset($_GET['subpage']) && $_GET['subpage'] == 'upload') { // Uploading/Resizing Script
        $url = $_FILES['imagefile']['name']; // Set $url To Equal The Filename For Later Use
        if ($_FILES['imagefile']['type'] == "image/jpg" || $_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg") {
        $file_ext = strrchr($_FILES['imagefile']['name'], '.'); // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php
        $copy = copy($_FILES['imagefile']['tmp_name'], "$idir" . $_FILES['imagefile']['name']); // Move Image From Temporary Location To Permanent Location
        if ($copy) { // If The Script Was Able To Copy The Image To It's Permanent Location
        print 'Image uploaded successfully.<b r />'; // Was Able To Successfully Upload Image
        $simg = imagecreatefrom jpeg("$idir" . $url); // Make A New Temporary Image To Create The Thumbanil From
        $currwidth = imagesx($simg); // Current Image Width
        $currheight = imagesy($simg); // Current Image Height
        if ($currheight > $currwidth) { // If Height Is Greater Than Width
        $zoom = $twidth / $currheight; // Length Ratio For Width
        $newheight = $theight; // Height Is Equal To Max Height
        $newwidth = $currwidth * $zoom; // Creates The New Width
        } else { // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height)
        $zoom = $twidth / $currwidth; // Length Ratio For Height
        $newwidth = $twidth; // Width Is Equal To Max Width
        $newheight = $currheight * $zoom; // Creates The New Height
        }
        $dimg = imagecreate($ne wwidth, $newheight); // Make New Image For Thumbnail
        imagetruecolort opalette($simg, false, 256); // Create New Color Pallete
        $palsize = ImageColorsTota l($simg);
        for ($i = 0; $i < $palsize; $i++) { // Counting Colors In The Image
        $colors = ImageColorsForI ndex($simg, $i); // Number Of Colors Used
        ImageColorAlloc ate($dimg, $colors['red'], $colors['green'], $colors['blue']); // Tell The Server What Colors This Image Will Use
        }
        imagecopyresize d($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It)
        imagejpeg($dimg , "$tdir" . $url); // Saving The Image
        imagedestroy($s img); // Destroying The Temporary Image
        imagedestroy($d img); // Destroying The Other Temporary Image
        print 'Image thumbnail created successfully.'; // Resize successful
        } else {
        print '<font color="#FF0000" >ERROR: Unable to upload image.</font>'; // Error Message If Upload Failed
        }
        } else {
        print '<font color="#FF0000" >ERROR: Wrong filetype (has to be a .jpg or .jpeg. Yours is '; // Error Message If Filetype Is Wrong
        print $file_ext; // Show The Invalid File's Extention
        print '.</font>';
        }
        } ?>
        [/code]

        error msg:

        Image uploaded successfully.
        Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1100 bytes) in /local/home/wwwuser/home.mishra.biz/addressbook/addphoto.php on line 34

        the origina image which iam uploading has a size=2048x1536
        & i hav written code to resize it to 1100x650..
        please giv any suggession...
        thanks..

        Comment

        • coffear
          New Member
          • Nov 2007
          • 20

          #5
          Originally posted by mishrarajesh44
          Image uploaded successfully.
          Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1100 bytes) in /local/home/wwwuser/home.mishra.biz/addressbook/addphoto.php on line 34

          the origina image which iam uploading has a size=2048x1536
          & i hav written code to resize it to 1100x650..
          please giv any suggession...
          thanks..
          PHP has a configuration option that limits the memory a script can use. The error message that you show indicates that the operation requires more memory than you are allowed.

          Comment

          • Markus
            Recognized Expert Expert
            • Jun 2007
            • 6092

            #6
            I believe there is a way you can temporarily set the php.ini settings to allow for higher limitations on the memory.

            Soemthing like:
            [php]
            ini_set('memory _limit', '12M');
            [/php]
            Not sure, but try that (play around with the sizes too) and let me know mishrarajesh!

            -markus

            Comment

            • mishrarajesh44
              New Member
              • Nov 2007
              • 23

              #7
              Originally posted by markusn00b
              I believe there is a way you can temporarily set the php.ini settings to allow for higher limitations on the memory.

              Soemthing like:
              [php]
              ini_set('memory _limit', '12M');
              [/php]
              Not sure, but try that (play around with the sizes too) and let me know mishrarajesh!

              -markus
              in the phpinfo( ) , i saw the memory_limit = 16M

              & post_max size = 8M

              so how much memory_limit should i set it to ?
              i mean .... ini_set('memory _limit', ' howmuch ' )
              plese reply soon
              thanks......... .

              Comment

              • pikcher
                New Member
                • Nov 2007
                • 1

                #8
                Originally posted by mishrarajesh44
                in the phpinfo( ) , i saw the memory_limit = 16M

                & post_max size = 8M

                so how much memory_limit should i set it to ?
                i mean .... ini_set('memory _limit', ' howmuch ' )
                plese reply soon
                thanks......... .
                Set it to
                memory_limit = 32M
                post_max_size = 32M

                and large image size be uploaded.

                Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1100 bytes)

                It means what not enouth memory for loading image

                You can also use the programm www.imagemagick.org/

                Comment

                • mishrarajesh44
                  New Member
                  • Nov 2007
                  • 23

                  #9
                  Originally posted by pikcher
                  Set it to
                  memory_limit = 32M
                  post_max_size = 32M

                  and large image size be uploaded.

                  Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1100 bytes)

                  It means what not enouth memory for loading image

                  You can also use the programm www.imagemagick.org/
                  how can i change the setting ? any php query..?


                  plese tell me if any..
                  thanks for reply..

                  Comment

                  • coffear
                    New Member
                    • Nov 2007
                    • 20

                    #10
                    the code was provided in an earlier post:-

                    ini_set('memory _limit', '12M');

                    change the 12M to the value you want. However you may not have permission to increase this.

                    Comment

                    • mishrarajesh44
                      New Member
                      • Nov 2007
                      • 23

                      #11
                      Originally posted by coffear
                      the code was provided in an earlier post:-

                      ini_set('memory _limit', '12M');

                      change the 12M to the value you want. However you may not have permission to increase this.
                      thanks i got it....
                      it works..

                      Comment

                      Working...