PHP: Caching resized images in Memcached. 

function resize_image($file, $w, $h, $crop=FALSE) {
list($width, $height) = getimagesize($file);
$r = $width / $height;
if ($crop) {
if ($width > $height) {
$width = ceil($width-($width*abs($r-$w/$h)));
} else {
$height = ceil($height-($height*abs($r-$w/$h)));
}
$newwidth = $w;
$newheight = $h;
} else {
if ($w/$h > $r) {
$newwidth = $h*$r;
$newheight = $h;
} else {
$newheight = $w/$r;
$newwidth = $w;
}
}
$src = imagecreatefromjpeg($file);
$dst = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

return $dst;
}
header('Content-Type: image/jpeg');

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect to Memcached.");


$key = md5('Snake_River_(5mb).jpg');
$get_result = $memcache->get($key);

if ($get_result) {
echo $get_result;
}
else {
$img = resize_image('Snake_River_(5mb).jpg', 300, 300);

ob_start();
imagejpeg($img);


$memcache->set($key, ob_get_contents(), 0, 10); // Cache thumbnail for 10 secs.



}
imagedestroy($img);


Comments
Comments are not available for this entry.
2024 By Angel Cool