By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,538 Members | 869 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,538 IT Pros & Developers. It's quick & easy.

Script Crashing

P: n/a
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
Jul 17 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
Lee Marsh <bu*************@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))
Jul 17 '05 #2

P: n/a
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" <pa**********@invalid.tryba.nl> wrote in message
news:42***********************@news6.xs4all.nl...
Lee Marsh <bu*************@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))

Jul 17 '05 #3

P: n/a
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

Jul 17 '05 #4

P: n/a
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);
}

Jul 17 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.