$maxwidth) $scale = $width / $maxwidth; if($height / $scale > $maxheight) $scale = $height / $maxheight; $image_p = imagecreatetruecolor($width / $scale, $height / $scale); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width / $scale, $height / $scale, $width, $height); return $image_p; } function errorImage($message) { header("Content-type: image/png"); $im = @imagecreate(8 + strlen($message) * 5, 20) or die("Cannot Initialize new GD image stream"); $background_color = imagecolorallocate($im, 0, 0, 0); $text_color = imagecolorallocate($im, 233, 14, 91); imagestring($im, 1, 5, 5, $message, $text_color); imagepng($im); imagedestroy($im); } function getCachedImage($filename) { global $IMAGECACHE; $fullfilename = $IMAGECACHE . "/" . urlencode($filename); // Test the storage dir if(!file_exists($IMAGECACHE)) { if(!mkdir($IMAGECACHE)) errorImage("Could not create directory: " . $IMAGECACHE); } if(!is_dir($IMAGECACHE)) errorImage($IMAGECACHE . " exists but is not a directory"); if(!is_readable($IMAGECACHE) || !is_writeable($IMAGECACHE) || !is_executable($IMAGECACHE)) { errorImage($IMAGECACHE . " exists but does not have the correct permissions. (r/w/x)"); } // end of dir test if(!file_exists($fullfilename)) { $url = parse_url($filename); $filetype = strrchr($url["path"], '.'); if( true || ping($url["hostname"], 1000) != -1) { error_reporting(E_ERROR | E_PARSE); switch(strtolower($filetype)) { case ".jpeg": case ".jpg": $image = imagecreatefromjpeg(urldecode($filename)); if(!$image) errorImage("Could not read: ". $filename); $image = rescale($image); imagejpeg($image, $fullfilename, 90); break; case ".gif": $image = imagecreatefromgif(urldecode($filename)); if(!$image) errorImage("Could not read: ". $filename); $image = rescale($image); imagegif($image, $fullfilename); break; case ".png": $image = imagecreatefrompng(urldecode($filename)); if(!$image) errorImage("Could not read: ". $filename); $image = rescale($image); imagepng($image, $fullfilename); break; default: if(!$image) errorImage("Unknown image type " . $filetype); break; } error_reporting(E_ALL ^ E_NOTICE); } } header('Content-Description: File Transfer'); header('Content-Type: image/jpeg'); header('Content-Length: ' . filesize($fullfilename)); header('Content-Disposition: inline; filename=' . basename($filename)); readfile($fullfilename); } ?>