$max_w)||($final_h > $max_h))
{
$ximgid = "";
// horizontal
if ($final_w > $final_h)
{
$temp = ($final_w / $max_w);
$final_w = ($final_w / $temp);
$final_h = ($final_h / $temp);
}
// vertical
else
{
$temp = ($final_h / $max_h);
$final_h = ($final_h / $temp);
$final_w = ($final_w / $temp);
}
}
}
$relativeimage = $_REQUEST['relativeimage'];
$C_CACHE = $_SERVER['DOCUMENT_ROOT']."/cache/";
if (strtolower($ext) == "peg")
$ext = "jpg";
// IF XIMGID THEN CACHE
if (($ximgid != "")&&(!$mobile))
{
// IF CACHE EXISTS
if (file_exists($C_CACHE.$ximgid.".".$ext))
$img_cached = true;
else
$img_cached = false;
}
// CREATE FULL PATH
if ($archive == 0)
$serverimage = C_WWW.$relativeimage;
else
$serverimage = OWS_WWW.$relativeimage;
// JPG
if ((strtolower($ext) == "jpg")||(strtolower($ext) == "peg"))
{
// GET SERVER IMAGE
$img = ImageCreateFromJPEG($serverimage);
// CREATE BLANK CANVAS
$dst_img = imagecreatetruecolor(($final_w),($final_h));
// COPY SERVER IMAGE INTO CANVAS
imagecopyresampled($dst_img, $img, 0, 0, 0, 0, $final_w, $final_h, ImageSX($img), ImageSY($img));
// SET HEADER FILE TYPE
$fileHeader = "image/jpeg";
// IF IMAGE IS ALREADY IN CACHE
if ($img_cached)
{
// RETURN IMAGE FROM CACHE
Header("Content-Type: ".$fileHeader);
echo file_get_contents($C_CACHE.$ximgid.".".$ext);
}
// IF IMAGE NOT IN CACHE
else
{
// Sharpen the image based on two things:
// (1) the difference between the original size and the final size
// (2) the final size
$sharpness = findSharp(ImageSX($img), $final_w);
$sharpenMatrix = array(
array(-1, -2, -1),
array(-2, $sharpness + 12, -2),
array(-1, -2, -1)
);
$divisor = $sharpness;
$offset = 0;
imageconvolution($dst_img, $sharpenMatrix, $divisor, $offset);
// SAVE THE IMAGE TO CACHE
if ($ximgid != "")
imagejpeg($dst_img, $C_CACHE.$ximgid.".".$ext, '90');
// RETURN IMAGE TO BROWSER
Header("Content-Type: ".$fileHeader);
imagejpeg($dst_img, NULL, 90);
}
// CLEAN UP IMAGE
imagedestroy($dst_img);
// PNG
}
else if (strtolower($ext) == "png")
{
// GET SERVER IMAGE
$img = ImageCreateFromPNG($serverimage);
// CREATE BLANK CANVAS
$dst_img = imagecreatetruecolor(($final_w),($final_h));
// HANDLE TRANSPARENCY
$transparency = imagecolortransparent($img);
imagealphablending($dst_img, false);
$color = imagecolorallocatealpha($dst_img, 0, 0, 0, 127);
imagefill($dst_img, 0, 0, $color);
imagesavealpha($dst_img, true);
// COPY SERVER IMAGE INTO CANVAS
imagecopyresampled($dst_img, $img, 0, 0, 0, 0, $final_w, $final_h, ImageSX($img), ImageSY($img));
// SET HEADER FILE TYPE
$fileHeader = "image/png";
// IF IMAGE IS ALREADY IN CACHE
if ($img_cached)
{
// RETURN IMAGE FROM CACHE
Header("Content-Type: ".$fileHeader);
echo file_get_contents($C_CACHE.$ximgid.".".$ext);
}
// IF IMAGE NOT IN CACHE
else
{
// SAVE THE IMAGE TO CACHE
if ($ximgid != "")
imagepng($dst_img, $C_CACHE.$ximgid.".".$ext);
// RETURN IMAGE TO BROWSER
Header("Content-Type: ".$fileHeader);
imagepng($dst_img);
}
// CLEAN UP IMAGE
imagedestroy($dst_img);
}
// GIF
else if (strtolower($ext) == "gif")
{
// GET SERVER IMAGE
$img = ImageCreateFromGIF($serverimage);
// CREATE BLANK CANVAS
$dst_img = imagecreatetruecolor(($final_w),($final_h));
// HANDLE TRANSPARENCY
$trnprt_indx = imagecolortransparent($img);
if ($trnprt_indx >= 0)
{
//its transparent
$trnprt_color = imagecolorsforindex($img, $trnprt_indx);
$trnprt_indx = imagecolorallocate($dst_img, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
imagefill($dst_img, 0, 0, $trnprt_indx);
imagecolortransparent($dst_img, $trnprt_indx);
}
else
{
Imagefill($dst_img, 0, 0, imagecolorallocate($dst_img, 255, 255, 255));
}
// COPY SERVER IMAGE INTO CANVAS
imagecopyresampled($dst_img, $img, 0, 0, 0, 0, $final_w, $final_h, ImageSX($img), ImageSY($img));
// SET HEADER FILE TYPE
$fileHeader = "image/gif";
// IF IMAGE IS ALREADY IN CACHE
if ($img_cached)
{
// RETURN IMAGE FROM CACHE
Header("Content-Type: ".$fileHeader);
echo file_get_contents($C_CACHE.$ximgid.".".$ext);
}
// IF IMAGE NOT IN CACHE
else
{
// SAVE THE IMAGE TO CACHE
if ($ximgid != "")
imagegif($dst_img, $C_CACHE.$ximgid.".".$ext);
// RETURN IMAGE TO BROWSER
Header("Content-Type: ".$fileHeader);
imagegif($dst_img);
}
// CLEAN UP IMAGE
imagedestroy($dst_img);
}
?>