Script Crashing

This is a discussion on Script Crashing within the PHP Language forums, part of the PHP Programming Forums category; Okay, I posted this over at alt.php, but got nil response, so I'm posting it hear again in ...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 05-18-2005
Lee Marsh
 
Posts: n/a
Default 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 = ImageCreateTrueColor($width,$height); //creates new image
ImageCopyResized($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
http://www.inaneasylum.org

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


Reply With Quote
  #2 (permalink)  
Old 05-18-2005
Daniel Tryba
 
Posts: n/a
Default Re: Script Crashing

Lee Marsh <burgermeister01@fake.com> wrote:
> 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.


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))
Reply With Quote
  #3 (permalink)  
Old 05-18-2005
Lee Marsh
 
Posts: n/a
Default 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
http://www.inaneasylum.org

Goodbye, adios, bis bald, see ya later, wiedersehen, and everything in
between
"Daniel Tryba" <partmapsswen@invalid.tryba.nl> wrote in message
news:428a863e$0$64558$c5fe704e@news6.xs4all.nl...
> Lee Marsh <burgermeister01@fake.com> wrote:
>> 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.

>
> 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))



Reply With Quote
  #4 (permalink)  
Old 05-18-2005
dracolytch
 
Posts: n/a
Default 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

Reply With Quote
  #5 (permalink)  
Old 05-18-2005
Chung Leong
 
Posts: n/a
Default 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 imagecreatefromjpegthumbnail($path) {
if($data = @exif_read_data($path, 'THUMBNAIL', false, true)) {
if($thumb_nail_data = @$data['THUMBNAIL']['THUMBNAIL']) {
return @imagecreatefromstring($thumb_nail_data);
}
}
return false;
}

Example:

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

Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 11:50 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0