Re: [PHP] Create Thumbnails from image
Yeah sorry about that.. It happens where I just hit reply and forget to add the mail list address :-( Oops.. hehe --oOo---oOo-- Julien Bonastre [The_RadiX] The-Spectrum Network CEO [EMAIL PROTECTED] www.the-spectrum.org --oOo---oOo-- - Original Message - From: Kjell Hansen [EMAIL PROTECTED] To: -=| Julien Bonastre |=- [EMAIL PROTECTED] Sent: Tuesday, September 24, 2002 1:55 AM Subject: Re: [PHP] Create Thumbnails from image Hey Julien! Thanx for the code! Your posting from yesterday helped me out. Actually I was on the right path all along but hadn't activated the GD-extension in my php.ini and so I just got errors and grew _pretty_ annoyed by it. Then after I got your message from yesterday giving med the same errors I realized that there were somethin' cookin'. After activating the GD-extension and restarted Apache your snippet worked fine and eventually mine too. Thanx again for your effort, it would have been better though if we all had sent this to the newsgroup. More people would have had a chance to see it there... Have fun Regards Kjell - Original Message - From: -=| Julien Bonastre |=- [EMAIL PROTECTED] To: Kjell Hansen [EMAIL PROTECTED] Sent: Monday, September 23, 2002 4:20 PM Subject: Re: [PHP] Create Thumbnails from image OMG.. This is the second question tonight I answer that I was just working on today :-p hah.. Ok.. simple.. here's my code I used today for www.operation-scifi.com/lobby Thing is.. It's about as understandable to other's as hieroglyphics.. Therefore.. a simple solution.. do this: ? header(Content-type: image/jpeg); $img=imagecreatefromxxx(../dir/img.ext); //where xxx = jpeg | png | gif etc.. $img2=imagecreate(150,100); $imgsize=getimagesize(../dir/img.ext); imagecopyresized($img2,$img,0,0,0,0,150,100,$size[0],$size[1]); imagexxx($img2); ? Substitute the filepath etc.. and also the 150/100 dimension sizes.. xxx denotes the image type which depending on your GD version .. jpeg has always been supported.. GIF has been removed as of 1.6 I think due to the LZW compression patent by Unisys.. and now they have PNG which my site uses due to it's much better file format and flexibility.. Also BTW.. this script is designed to be a seperate file.. ie image.php perhaps even do what I did and make the filename actually a $_GET param.. As in.. you call: ./image.php?im=whatever.jpg and it generates a thumbnailed version.. if your using JPEG format you can also use this param in the imagejpeg($img2); function: imagejpeg($img2,,80); whereby the output quality is no 80%.. that means lower qual thumbnail.. There is a lot of fun things that can be done just with the core graphics module of PHP without GD. but GD is soo great it can do much more exciting things.. Like for instance today I wanted to resize these big pics.. That's all good.. But they are somewhat pixellised from the large downshrink. Now.. the function imagecopyresample() would be great.. but's a GD2+ thing.. I don't use GD plus yet.. [downloading the bin as I write this] but that's just one great func. taht allows for resize and interpolation of near pixels (ie smoothing).. w00tage eh?? Anyways.. enough said. rambling on now.. HIH /* IMAGE HANDLING ROUTINE */ $errmsg=Array(); if(strlen($_GET[d])1) { $errmsg[]=Invalid GET params sent:; $errmsg[]=Must send valid data_id to script!; $fwidth=(strlen($errmsg[count($errmsg)-1])$fwidth?strlen($errmsg[count($err msg)-1]):$fwidth); } else { $sql=mysql_query(SELECT * FROM opscifi_news_data WHERE data_id = .$_GET[d],$DB); if(mysql_num_rows($sql)0 AND $ditem=@mysql_fetch_array($sql)) { if(!file_exists(./news/n.$ditem[news_id].d.$ditem[data_id]...subst r($ditem[filename],strpos($ditem[filename],.,0)+1,strlen($ditem[filen ame])-(strpos(fname,.,0)+1 { $errmsg[]=Invalid file request:; $errmsg[]=File ./news/n.$ditem[news_id].d.$ditem[data_id]...substr($ditem[filenam e],strpos($ditem[filename],.,0)+1,strlen($ditem[filename])-(strpos(fn ame,.,0)+1)). does not exist!; $fwidth=(strlen($errmsg[count($errmsg)-1])$fwidth?strlen($errmsg[count($err msg)-1]):$fwidth); } elseif(!preg_match(/(jpg|jpeg|jpe)/i,$ditem[filename])) { $errmsg[]=Invalid image type request:; $errmsg[]=Script can only process image/jpeg files!; $fwidth=(strlen($errmsg[count($errmsg)-1])$fwidth?strlen($errmsg[count($err msg)-1]):$fwidth); } else { // Spit out required [standard] MIME-type header header(Content-type: image/jpeg); // Fetch the original friendly filename $row=mysql_fetch_array(mysql_query(SELECT filename FROM opscifi_news_data WHERE data_id = .$_GET[d],$DB)); $ditem[filename]=$row[0]; header(Content-Disposition: image; filename=.$ditem[filename]); // Update request field in images data element if(!isset($_GET[t
Re: [PHP] Create Thumbnails from image
OMG.. This is the second question tonight I answer that I was just working on today :-p hah.. Ok.. simple.. here's my code I used today for www.operation-scifi.com/lobby Thing is.. It's about as understandable to other's as hieroglyphics.. Therefore.. a simple solution.. do this: ? header(Content-type: image/jpeg); $img=imagecreatefromxxx(../dir/img.ext); //where xxx = jpeg | png | gif etc.. $img2=imagecreate(150,100); $imgsize=getimagesize(../dir/img.ext); imagecopyresized($img2,$img,0,0,0,0,150,100,$size[0],$size[1]); imagexxx($img2); ? Substitute the filepath etc.. and also the 150/100 dimension sizes.. xxx denotes the image type which depending on your GD version .. jpeg has always been supported.. GIF has been removed as of 1.6 I think due to the LZW compression patent by Unisys.. and now they have PNG which my site uses due to it's much better file format and flexibility.. Also BTW.. this script is designed to be a seperate file.. ie image.php perhaps even do what I did and make the filename actually a $_GET param.. As in.. you call: ./image.php?im=whatever.jpg and it generates a thumbnailed version.. if your using JPEG format you can also use this param in the imagejpeg($img2); function: imagejpeg($img2,,80); whereby the output quality is no 80%.. that means lower qual thumbnail.. There is a lot of fun things that can be done just with the core graphics module of PHP without GD. but GD is soo great it can do much more exciting things.. Like for instance today I wanted to resize these big pics.. That's all good.. But they are somewhat pixellised from the large downshrink. Now.. the function imagecopyresample() would be great.. but's a GD2+ thing.. I don't use GD plus yet.. [downloading the bin as I write this] but that's just one great func. taht allows for resize and interpolation of near pixels (ie smoothing).. w00tage eh?? Anyways.. enough said. rambling on now.. HIH /* IMAGE HANDLING ROUTINE */ $errmsg=Array(); if(strlen($_GET[d])1) { $errmsg[]=Invalid GET params sent:; $errmsg[]=Must send valid data_id to script!; $fwidth=(strlen($errmsg[count($errmsg)-1])$fwidth?strlen($errmsg[count($err msg)-1]):$fwidth); } else { $sql=mysql_query(SELECT * FROM opscifi_news_data WHERE data_id = .$_GET[d],$DB); if(mysql_num_rows($sql)0 AND $ditem=@mysql_fetch_array($sql)) { if(!file_exists(./news/n.$ditem[news_id].d.$ditem[data_id]...subst r($ditem[filename],strpos($ditem[filename],.,0)+1,strlen($ditem[filen ame])-(strpos(fname,.,0)+1 { $errmsg[]=Invalid file request:; $errmsg[]=File ./news/n.$ditem[news_id].d.$ditem[data_id]...substr($ditem[filenam e],strpos($ditem[filename],.,0)+1,strlen($ditem[filename])-(strpos(fn ame,.,0)+1)). does not exist!; $fwidth=(strlen($errmsg[count($errmsg)-1])$fwidth?strlen($errmsg[count($err msg)-1]):$fwidth); } elseif(!preg_match(/(jpg|jpeg|jpe)/i,$ditem[filename])) { $errmsg[]=Invalid image type request:; $errmsg[]=Script can only process image/jpeg files!; $fwidth=(strlen($errmsg[count($errmsg)-1])$fwidth?strlen($errmsg[count($err msg)-1]):$fwidth); } else { // Spit out required [standard] MIME-type header header(Content-type: image/jpeg); // Fetch the original friendly filename $row=mysql_fetch_array(mysql_query(SELECT filename FROM opscifi_news_data WHERE data_id = .$_GET[d],$DB)); $ditem[filename]=$row[0]; header(Content-Disposition: image; filename=.$ditem[filename]); // Update request field in images data element if(!isset($_GET[t])) mysql_query(UPDATE opscifi_news_data SET requests = requests + 1 WHERE data_id = .$_GET[d],$DB); // Load nxdx.ext into $f=./news/n.$ditem[news_id].d.$ditem[data_id]...substr($ditem[fil ename],strpos($ditem[filename],.,0)+1,strlen($ditem[filename])-(strpo s(fname,.,0)+1)); $img=imagecreatefromjpeg($f); $size=getimagesize($f); if(isset($_GET[h]) or isset($_GET[w])) { $outimg=imagecreate((isset($_GET[w])?$_GET[w]:$size[0]),(isset($_GET[h ])?$_GET[h]:$size[1])); imagecopyresized($outimg, $img, 0,0,0,0,(isset($_GET[w])?$_GET[w]:$size[0]),(isset($_GET[h])?$_GET[h ]:$size[1]),$size[0],$size[1]); } else { $outimg=$img; } imageinterlace($outimg,1); imagejpeg($outimg,,(isset($_GET[q])?$_GET[q]:100)); } } else { $errmsg[]=News Data Item Not in 'news_data' table!; $fwidth=(strlen($errmsg[count($errmsg)-1])$fwidth?strlen($errmsg[count($err msg)-1]):$fwidth); } } if(strlen($errmsg)0) { // Spit out required [standard] MIME-type header header(Content-type: image/jpeg); $f_size=2; $img=imagecreate(imagefontwidth($f_size)*$fwidth+14,(imagefontheight($f_size )+2)*count($errmsg)+5); imagefill($img, 0, 0, imagecolorallocate($img, 220,220,220)); foreach($errmsg as $pos=$str) imagestring($img, $f_size, 7, 3+($pos*(imagefontheight($f_size)+2)), $str,