diff options
author | Andreas Unterkircher <unki@netshadow.at> | 2007-06-21 18:49:03 +0000 |
---|---|---|
committer | Andreas Unterkircher <unki@netshadow.at> | 2007-06-21 18:49:03 +0000 |
commit | 3b285de30751d2dec0e242dcc50aa67147ada191 (patch) | |
tree | 5e93492cea6c03e5624fcc172625acffb10bb5ec /phpfspot.class.php | |
parent | 322fc50246f37ef26090dd954aa78b2649218c38 (diff) |
issue14, thumbs are now stored outside F-Spot's directory structure
issue12, file is not stored in phpfspot db if the thumbnail generation failed
git-svn-id: file:///var/lib/svn/phpfspot/trunk@119 fa6a889d-dae6-447d-9e79-4ba9a3039384
Diffstat (limited to 'phpfspot.class.php')
-rw-r--r-- | phpfspot.class.php | 40 |
1 files changed, 17 insertions, 23 deletions
diff --git a/phpfspot.class.php b/phpfspot.class.php index 06ded52..0fa1740 100644 --- a/phpfspot.class.php +++ b/phpfspot.class.php @@ -119,7 +119,7 @@ class PHPFSPOT { $details = $this->get_photo_details($photo); $orig_path = $this->translate_path($details['directory_path']) ."/". $details['name']; - $thumb_path = $this->translate_path($details['directory_path']) ."/thumbs/". $this->cfg->photo_width ."_". $details['name']; + $thumb_path = $this->cfg->base_path ."/thumbs/". $this->cfg->photo_width ."_". $this->getMD5($photo); /* If the thumbnail doesn't exist yet, try to create it */ if(!file_exists($thumb_path)) { @@ -422,12 +422,12 @@ class PHPFSPOT { } // showCredits() - public function create_thumbnail($image, $width) + public function create_thumbnail($orig_image, $thumb_image, $width) { - if(!file_exists($image)) + if(!file_exists($orig_image)) return false; - $meta = $this->get_meta_informations($image); + $meta = $this->get_meta_informations($orig_image); $rotate = 0; $flip = false; @@ -452,10 +452,10 @@ class PHPFSPOT { $rotate = 270; $flip = false; break; } - $src_img = @imagecreatefromjpeg($image); + $src_img = @imagecreatefromjpeg($orig_image); if(!$src_img) { - print "Can't load image from ". $image ."\n"; + print "Can't load image from ". $orig_image ."\n"; return false; } @@ -479,7 +479,7 @@ class PHPFSPOT { $new_h = abs($new_w * $aspect_ratio); /* creates new image of that size */ - $dst_img = imagecreatetruecolor($new_w,$new_h); + $dst_img = imagecreatetruecolor($new_w, $new_h); imagefill($dst_img, 0, 0, ImageColorAllocate($dst_img, 255, 255, 255)); @@ -501,24 +501,14 @@ class PHPFSPOT { } /* write down new generated file */ - - if(!file_exists(dirname($image) ."/thumbs")) { - $result = mkdir(dirname($image) ."/thumbs"); - if($result === false) { - print "Can't create thumb directory ". dirname($image) ."/thumbs\n"; - return false; - } - } - - $newfile = dirname($image) ."/thumbs/". $width ."_". basename($image); - $result = imagejpeg($dst_img, $newfile, 75); + $result = imagejpeg($dst_img, $thumb_image, 75); /* free your mind */ imagedestroy($dst_img); imagedestroy($src_img); if($result === false) { - print "Can't write thumbnail ". $newfile ."\n"; + print "Can't write thumbnail ". $thumb_image ."\n"; return false; } @@ -574,19 +564,23 @@ class PHPFSPOT { $error = 0; foreach($resolutions as $resolution) { - $thumb_path = $this->translate_path($details['directory_path']) ."/thumbs/". $resolution ."_". $details['name']; + + $thumb_path = $this->cfg->base_path ."/thumbs/". $resolution ."_". $file_md5; + + /* if the thumbnail file doesn't exist, create it */ if(!file_exists($thumb_path)) { if($fromcmd) print " ". $resolution ."px"; - if(!$this->create_thumbnail($full_path, $resolution)) + if(!$this->create_thumbnail($full_path, $thumb_path, $resolution)) $error = 1; } + /* if the file hasn't changed there is no need to regen the thumb */ elseif($file_md5 != $this->getMD5($idx) || $force) { if($fromcmd) print " ". $resolution ."px"; - if(!$this->create_thumbnail($full_path, $resolution)) + if(!$this->create_thumbnail($full_path, $thumb_path, $resolution)) $error = 1; } @@ -600,7 +594,7 @@ class PHPFSPOT { } // gen_thumb() - private function getMD5($idx) + public function getMD5($idx) { $result = $this->cfg_db->db_query(" SELECT img_md5 |