diff options
author | Andreas Unterkircher <unki@netshadow.at> | 2007-06-04 18:32:41 +0000 |
---|---|---|
committer | Andreas Unterkircher <unki@netshadow.at> | 2007-06-04 18:32:41 +0000 |
commit | 61f2970e221f8612e51e7802cc127819c4caa369 (patch) | |
tree | 7d7ef582bf2eb4a17057af98c5aa9d8bbe13dd69 /phpfspot_img.php | |
parent | b97144fa93285fac423d61522bdea6028ac9c566 (diff) |
initial import
git-svn-id: file:///var/lib/svn/phpfspot/trunk@2 fa6a889d-dae6-447d-9e79-4ba9a3039384
Diffstat (limited to 'phpfspot_img.php')
-rw-r--r-- | phpfspot_img.php | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/phpfspot_img.php b/phpfspot_img.php new file mode 100644 index 0000000..3a2a322 --- /dev/null +++ b/phpfspot_img.php @@ -0,0 +1,113 @@ +<?php + +require_once "phpfspot_db.php"; +require_once "phpfspot.class.php"; + +class PHPFSPOT_IMG { + + var $db; + var $parent; + + public function __construct() + { + $this->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) + { + $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); +} + +?> |