$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); } ?>