summaryrefslogtreecommitdiffstats
path: root/phpfspot_img.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpfspot_img.php')
-rw-r--r--phpfspot_img.php113
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);
+}
+
+?>