parent = new PHPFSPOT; $this->db = $this->parent->db; } // __construct() public function __destruct() { } // __desctruct() public function show($idx, $width = "") { $details = $this->parent->get_photo_details($idx); foreach(Array($this->parent->cfg->thumb_width, $this->parent->cfg->photo_width) as $resolution) $this->resize_image($this->parent->translate_path($details['directory_path']) ."/". $details['name'], $resolution); if($width == "") $fullpath = $this->parent->translate_path($details['directory_path']) ."/". $details['name']; else $fullpath = $this->parent->translate_path($details['directory_path']) ."/thumbs/". $width ."_". $details['name']; $tmp = getimagesize($fullpath); $mime = $tmp['mime']; Header("Content-Type: ". $mime); Header("Content-Length: ". filesize($fullpath)); Header("Content-Transfer-Encoding: binary\n"); $user_agent = strtolower ($_SERVER["HTTP_USER_AGENT"]); Header("Content-Disposition: inline; filename=\"". $details['name'] ."\""); Header("Accept-Ranges: bytes"); Header("Connection: close"); $file = fopen($fullpath, "rb"); fpassthru($file); @fclose($file); } // show() public function resize_image($image, $width) { // if thumbnail already exists, don't recreate it if(file_exists(dirname($image) ."/thumbs/". $width ."_". basename($image))) return; $src_img = @imagecreatefromjpeg($image); if($src_img) { /* grabs the height and width */ $new_w = imagesx($src_img); $new_h = imagesy($src_img); // If requested width is more then the actual image width, // do not generate a thumbnail if($width >= $new_w) { imagedestroy($src_img); return; } /* calculates aspect ratio */ $aspect_ratio = $new_h / $new_w; /* sets new size */ $new_w = $width; $new_h = abs($new_w * $aspect_ratio); /* creates new image of that size */ $dst_img = imagecreatetruecolor($new_w,$new_h); imagefill($dst_img, 0, 0, ImageColorAllocate($dst_img, 255, 255, 255)); /* copies resized portion of original image into new image */ imagecopyresampled($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img)); /* write down new generated file */ if(!file_exists(dirname($image) ."/thumbs")) mkdir(dirname($image) ."/thumbs"); $newfile = dirname($image) ."/thumbs/". $width ."_". basename($image); imagejpeg($dst_img, $newfile, 75); /* free your mind */ imagedestroy($dst_img); imagedestroy($src_img); } } // resize_image() } if(isset($_GET['idx']) && is_numeric($_GET['idx'])) { if(isset($_GET['width']) && is_numeric($_GET['width'])) $width = $_GET['width']; else $width = ""; $img = new PHPFSPOT_IMG; $img->show($_GET['idx'], $width); } ?>