Script Crashing

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Lee Marsh

    Script Crashing

    Okay, I posted this over at alt.php, but got nil response, so I'm posting it
    hear again in hopes of getting a response. Sorry to anyone reading this
    twice:

    Okay...so on my website, where people can upload pictures, there is a fairly
    major problem with the upload script. Specificaly the part of this script
    that automatically generates thumbnails. For some reason, when someone
    uploads a picture that is very large in dimensions, in the process of making
    a thumbnail, the script crashes, and the browser gives an 'internal server
    error' message. Here is the snippet of code that I've narrowed down as the
    problem:
    $width = $size[0]; //width of original image
    $height = $size[1]; //height of original image

    $width = round(($width/4)); //width for thumnail
    $height = round(($height/4)); //height for thumbnail
    $dst_img = ImageCreateTrue Color($width,$h eight); //creates new image
    ImageCopyResize d($dst_img, $src_img, 0,0,0,0, $width, $height, $size[0],
    $size[1]); //creates thumbnail from original

    ImageJpeg($dst_ img, "users/$uname/$album/small/$pic_name", 60); //copies
    thumnail to appropriate folder with quality adjustment

    Now the funny thing is that this works fine on my own computer where I test
    stuff out before making it live. When I upload it to my website however,
    these large pictures crash. This makes me wonder if it's not some sort of
    PHP config setting. The dimension in which I have found this is a problem
    is, 2032x1524 pixels. Anyways, any help would be greatly appeciated, and
    TIA.
    --
    <============ =>
    --Lee


    Goodbye, adios, bis bald, see ya later, wiedersehen, and everything in
    between


  • Daniel Tryba

    #2
    Re: Script Crashing

    Lee Marsh <burgermeister0 1@fake.com> wrote:[color=blue]
    > ImageJpeg($dst_ img, "users/$uname/$album/small/$pic_name", 60); //copies
    > thumnail to appropriate folder with quality adjustment
    >
    > Now the funny thing is that this works fine on my own computer where I test
    > stuff out before making it live. When I upload it to my website however,
    > these large pictures crash. This makes me wonder if it's not some sort of
    > PHP config setting. The dimension in which I have found this is a problem
    > is, 2032x1524 pixels. Anyways, any help would be greatly appeciated, and
    > TIA.[/color]

    Your only the second person to ask the same question this week :)

    It's propably a memory limit, said dimension needs 12387072 bytes of
    memory. Default is 8Mb max IIRC. You can check this by looking at the
    error messages (set level to E_ALL and use a decend tool (like lynx
    -source URL | less) or simply send it as "text" (remove image/foo
    header))

    Comment

    • Lee Marsh

      #3
      Re: Script Crashing

      Ugg, that's the problem though. It's on my host's server, and I don't have
      the $$ for anything nicer than a virtual server which puts the config files
      in their hands, and they're very obstinate about keeping their config files
      the same. Do you have any idea how I might be able to calculate the
      threshold and put some sorta check on that so the script doesn't crash?

      Also, do you not think it's strange that although I can send photos that are
      large, I can send files of equivelent file size (in this case 800KB)? On a
      similar note, I messed around with it some more, and the script will
      actually allow for images larger than the dimension I gave originally,
      however, the thumnail is a blank black image rather than, well, an actual
      thumnail? What do you think?
      --
      <============ =>
      --Lee


      Goodbye, adios, bis bald, see ya later, wiedersehen, and everything in
      between
      "Daniel Tryba" <partmapsswen@i nvalid.tryba.nl > wrote in message
      news:428a863e$0 $64558$c5fe704e @news6.xs4all.n l...[color=blue]
      > Lee Marsh <burgermeister0 1@fake.com> wrote:[color=green]
      >> ImageJpeg($dst_ img, "users/$uname/$album/small/$pic_name", 60); //copies
      >> thumnail to appropriate folder with quality adjustment
      >>
      >> Now the funny thing is that this works fine on my own computer where I
      >> test
      >> stuff out before making it live. When I upload it to my website however,
      >> these large pictures crash. This makes me wonder if it's not some sort of
      >> PHP config setting. The dimension in which I have found this is a problem
      >> is, 2032x1524 pixels. Anyways, any help would be greatly appeciated, and
      >> TIA.[/color]
      >
      > Your only the second person to ask the same question this week :)
      >
      > It's propably a memory limit, said dimension needs 12387072 bytes of
      > memory. Default is 8Mb max IIRC. You can check this by looking at the
      > error messages (set level to E_ALL and use a decend tool (like lynx
      > -source URL | less) or simply send it as "text" (remove image/foo
      > header))[/color]


      Comment

      • dracolytch

        #4
        Re: Script Crashing

        It's not surprising that the server can send/recieve files larger than
        the limit you're talking about. In those cases, it'll often not keep
        the entire file in memory at once, but stream parts of it as needed.

        You could do your thumbnail script in two parts. The first part is a
        sanity-check on the file. If the file has more than X pixels (pull the
        width and height, and multiply them), then fail, otherwise make the
        thumbnail. It's more of a way to gracefully deflect the problem than
        really solving it.

        ~D

        Comment

        • Chung Leong

          #5
          Re: Script Crashing

          One thing to try is to get the thumbnail that is stored in JPEG files.
          Digital cameras and software like Photoshop often place thumbnail
          images into files to make them easier to browse through.

          The following function tries to extract the thumbnail, returning a GD
          image handle if successful. You will need to enable the exif extension.

          function imagecreatefrom jpegthumbnail($ path) {
          if($data = @exif_read_data ($path, 'THUMBNAIL', false, true)) {
          if($thumb_nail_ data = @$data['THUMBNAIL']['THUMBNAIL']) {
          return @imagecreatefro mstring($thumb_ nail_data);
          }
          }
          return false;
          }

          Example:

          $f = "C:/Documents and Settings/cleong/My Documents/My
          Pictures/gonch2.jpg";
          if($img = imagecreatefrom jpegthumbnail($ f)) {
          header("Content-type: image/png");
          imagepng($img);
          }

          Comment

          Working...