GalaxyTramp Posted April 19, 2011 Share Posted April 19, 2011 I am using the following script on a couple of websites and it works well: <?php ////////////////////////////////////////////////////// THIS IS THE FUNCTION_RESIZE.PHP FILE /////////////////////////////////////////////////////////////////////////////////////// /* function by Wes Edling .. http://joedesigns.com feel free to use this in any project, i just ask for a credit in the source code. a link back to my site would be nice too. */ function resize($imagePath,$opts=null){ # start configuration $cacheFolder = './cache/'; # path to your cache folder, must be writeable by web server $remoteFolder = $cacheFolder.'remote/'; # path to the folder you wish to download remote images into $quality = 90; # image quality to use for ImageMagick (0 - 100) $cache_http_minutes = 20; # cache downloaded http images 20 minutes $path_to_convert = '/usr/bin/convert'; ## you shouldn't need to configure anything else beyond this point $purl = parse_url($imagePath); $finfo = pathinfo($imagePath); $ext = $finfo['extension']; # check for remote image.. if(isset($purl['scheme']) && $purl['scheme'] == 'http'): # grab the image, and cache it so we have something to work with.. list($filename) = explode('?',$finfo['basename']); $local_filepath = $remoteFolder.$filename; $download_image = true; if(file_exists($local_filepath)): if(filemtime($local_filepath) < strtotime('+'.$cache_http_minutes.' minutes')): $download_image = false; endif; endif; if($download_image == true): $img = file_get_contents($imagePath); file_put_contents($local_filepath,$img); endif; $imagePath = $local_filepath; endif; if(file_exists($imagePath) == false): $imagePath = $_SERVER['DOCUMENT_ROOT'].$imagePath; if(file_exists($imagePath) == false): return 'image not found'; endif; endif; if(isset($opts['w'])): $w = $opts['w']; endif; if(isset($opts['h'])): $h = $opts['h']; endif; $filename = md5_file($imagePath); if(!empty($w) and !empty($h)): $newPath = $cacheFolder.$filename.'_w'.$w.'_h'.$h.(isset($opts['crop']) && $opts['crop'] == true ? "_cp" : "").(isset($opts['scale']) && $opts['scale'] == true ? "_sc" : "").'.'.$ext; elseif(!empty($w)): $newPath = $cacheFolder.$filename.'_w'.$w.'.'.$ext; elseif(!empty($h)): $newPath = $cacheFolder.$filename.'_h'.$h.'.'.$ext; else: return false; endif; $create = true; if(file_exists($newPath) == true): $create = false; $origFileTime = date("YmdHis",filemtime($imagePath)); $newFileTime = date("YmdHis",filemtime($newPath)); if($newFileTime < $origFileTime): $create = true; endif; endif; if($create == true): if(!empty($w) and !empty($h)): list($width,$height) = getimagesize($imagePath); $resize = $w; if($width > $height): $resize = $w; if(isset($opts['crop']) && $opts['crop'] == true): $resize = "x".$h; endif; else: $resize = "x".$h; if(isset($opts['crop']) && $opts['crop'] == true): $resize = $w; endif; endif; if(isset($opts['scale']) && $opts['scale'] == true): $cmd = $path_to_convert." ".$imagePath." -resize ".$resize." -quality ".$quality." ".$newPath; else: $cmd = $path_to_convert." ".$imagePath." -resize ".$resize." -size ".$w."x".$h." xc:".(isset($opts['canvas-color'])?$opts['canvas-color']:"transparent")." +swap -gravity center -composite -quality ".$quality." ".$newPath; endif; else: $cmd = $path_to_convert." ".$imagePath." -thumbnail ".(!empty($h) ? 'x':'').$w."".(isset($opts['maxOnly']) && $opts['maxOnly'] == true ? "\>" : "")." -quality ".$quality." ".$newPath; endif; $c = exec($cmd); endif; # return cache file path return str_replace($_SERVER['DOCUMENT_ROOT'],'',$newPath); } //////////////////////////////////////////////////////////////// THIS IS THE EXAMPLE.PHP FILE ////////////////////////////////////////////////////////////////////////////////////////////////////////// <?php # include the function here include 'function.resize.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>PHP Image Resize - Example</title> <style> body { background: #ffffff; color: #121212; font-family: lucida grande; text-align: center; } h1 { font-size: 15px; text-align: center; } #main { margin: auto; width: 600px; text-align: left; } .block { margin: 20px; background: #fafafa; padding: 20px; text-align: center; border: 1px solid #cacaca; } pre { text-align: left; background: #010101; padding: 10px; font-size: 11px; } pre code { text-align: left; color: #ffffff; } .block p { color: #343434; font-size: 12px; } </style> </head> <body> <div id='main'> <h1>PHP Image Resizer</h1> <div class='block'> <?php $settings = array('w'=>150,'h'=>150,'crop'=>true); ?> <div><img src='<?=resize('http://www.image-online.com/admin.jpg',$settings)?>' border='0' /></div> <p>Image cropped & resized by width and height from a remote location.</p> <div><pre><code>src: http://www.image-online.com/admin.jpg<?php echo "\n\n"; print_r($settings)?></code></pre></div> </div> </div> </body> </html> ?> I now need the script to be able to resize images created dynamically from URL's in the following format: http://www.image-online.com/ShowImage.asp?SecId=zc&Id=P1&ImgId=03073 Is there any way of accessing the image created at this URL in order that I can manipulate it with this or another script. Regards GT Link to comment https://forums.phpfreaks.com/topic/234180-image-resize-and-cache-on-the-fly/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.