note 96227 added to function.imagecreatefromjpeg
| From: | brentwientjes at NOSPAM dot comcast dot net | Date: | Tue, 16 Feb 2010 08:47:14 +0000 |
| Subject: | note 96227 added to function.imagecreatefromjpeg | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-165997@lists.php.net to get a copy of this message | ||
Last night I posted the following note under move_upload_file and looked tonight to see if it got
into the system. I happen to also pull up imagecreatefromjpeg and got reminded of many resize
scripts in this section. Unfortunately, my experience was not covered by most of the examples below
because each of them assumed less than obvious requirements of the server and browser. So here is
the post again under this section to help others uncover the mystery in file uploading and resizing
arbitrary sized images. I have been testing for several days with hundreds of various size images
and it seems to work well. Many additional features could be added such as transparency, alpha
blending, camera specific knowledge, more error checking. Best of luck.
--- from move_upload_file post ---
I have for a couple of years been stymed to understand how to effectively load images (of more than
2MB) and then create thumbnails. My note below on general file uploading was an early hint of some
of the system default limitations and I have recently discovered the final limit I offer this as an
example of the various missing pieces of information to successfully load images of more than 2MB
and then create thumbnails. This particular example assumes a picture of a user is being uploaded
and because of browser caching needs a unique number at the end to make the browser load a new
picture for review at the time of upload. The overall calling program I am using is a Flex based
application which calls this php file to upload user thumbnails.
The secret sauce is:
1. adjust server memory size, file upload size, and post size
2. convert image to standard formate (in this case jpg) and scale
The server may be adjusted with the .htaccess file or inline code. This example has an .htaccess
file with file upload size and post size and then inline code for dynamic system memory.
htaccess file:
php_value post_max_size 16M
php_value upload_max_filesize 6M
<?php
// $img_base = base directory structure for thumbnail images
// $w_dst = maximum width of thumbnail
// $h_dst = maximum height of thumbnail
// $n_img = new thumbnail name
// $o_img = old thumbnail name
function convertPic($img_base, $w_dst, $h_dst, $n_img, $o_img)
{ini_set('memory_limit', '100M'); // handle large images
unlink($img_base.$n_img); // remove old images if present
unlink($img_base.$o_img);
$new_img = $img_base.$n_img;
$file_src = $img_base."img.jpg"; // temporary safe image storage
unlink($file_src);
move_uploaded_file($_FILES['Filedata']['tmp_name'], $file_src);
list($w_src, $h_src, $type) = getimagesize($file_src); // create new dimensions, keeping aspect
ratio
$ratio = $w_src/$h_src;
if ($w_dst/$h_dst > $ratio) {$w_dst = floor($h_dst*$ratio);} else {$h_dst =
floor($w_dst/$ratio);}
switch ($type)
{case 1: // gif -> jpg
$img_src = imagecreatefromgif($file_src);
break;
case 2: // jpeg -> jpg
$img_src = imagecreatefromjpeg($file_src);
break;
case 3: // png -> jpg
$img_src = imagecreatefrompng($file_src);
break;
}
$img_dst = imagecreatetruecolor($w_dst, $h_dst); // resample
imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $w_dst, $h_dst, $w_src, $h_src);
imagejpeg($img_dst, $new_img); // save new image
unlink($file_src); // clean up image storage
imagedestroy($img_src);
imagedestroy($img_dst);
}
$p_id = (Integer) $_POST[uid];
$ver = (Integer) $_POST[ver];
$delver = (Integer) $_POST[delver];
convertPic("your/file/structure/", 150, 150,
"u".$p_id."v".$ver.".jpg",
"u".$p_id."v".$delver.".jpg");
?>
----
Server IP: 208.69.120.55
Probable Submitter: 98.207.212.33
----
Manual Page -- http://www.php.net/manual/en/function.imagecreatefromjpeg.php
Edit -- https://master.php.net/note/edit/96227
Del: integrated -- https://master.php.net/note/delete/96227/integrated
Del: useless -- https://master.php.net/note/delete/96227/useless
Del: bad code -- https://master.php.net/note/delete/96227/bad+code
Del: spam -- https://master.php.net/note/delete/96227/spam
Del: non-english -- https://master.php.net/note/delete/96227/non-english
Del: in docs -- https://master.php.net/note/delete/96227/in+docs
Del: other reasons-- https://master.php.net/note/delete/96227
Reject -- https://master.php.net/note/reject/96227
Search -- https://master.php.net/manage/user-notes.php