From: Andreas Unterkircher Date: Thu, 21 Jun 2007 18:49:03 +0000 (+0000) Subject: issue14, thumbs are now stored outside F-Spot's directory structure X-Git-Tag: phpfspot-1.2~216 X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=commitdiff_plain;h=3b285de30751d2dec0e242dcc50aa67147ada191 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 --- 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 diff --git a/phpfspot_img.php b/phpfspot_img.php index e3b0852..061f56d 100644 --- a/phpfspot_img.php +++ b/phpfspot_img.php @@ -25,11 +25,13 @@ class PHPFSPOT_IMG { $details = $this->parent->get_photo_details($idx); + /* show original photo */ if($width == 0) { $fullpath = $this->parent->translate_path($details['directory_path']) ."/". $details['name']; } + /* show thumbnail */ else { - $fullpath = $this->parent->translate_path($details['directory_path']) ."/thumbs/". $width ."_". $details['name']; + $fullpath = $this->parent->cfg->base_path ."/thumbs/". $width ."_". $this->parent->getMD5($idx); } if(!file_exists($fullpath)) {