X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=phpfspot.class.php;h=18c00cfee37005b3ce9cac9a6f0c550d96ccd1c7;hp=e15f8e5e9aa66af354e943a80b1f9488ec7558f5;hb=474ad4bfaf3a83f01fcbc09f1d60ee0b1f084640;hpb=c7e18357997a370d30d53d800c8e7d3f34d695ef diff --git a/phpfspot.class.php b/phpfspot.class.php index e15f8e5..18c00cf 100644 --- a/phpfspot.class.php +++ b/phpfspot.class.php @@ -154,8 +154,10 @@ class PHPFSPOT { $result = $this->db->db_query(" SELECT tag_id as id, count(tag_id) as quantity FROM photo_tags + INNER JOIN tags t + ON t.id = tag_id GROUP BY tag_id - ORDER BY tag_id ASC + ORDER BY t.name ASC "); $tags = Array(); @@ -196,7 +198,7 @@ class PHPFSPOT { // uncomment if you want sizes in whole %: $size = ceil($size); - print "". $this->tags[$key] ." "; + print "". $this->tags[$key] .", "; } @@ -408,6 +410,9 @@ class PHPFSPOT { public function create_thumbnail($image, $width) { + if(!file_exists($image)) + return false; + $meta = $this->get_meta_informations($image); $rotate = 0; @@ -416,104 +421,95 @@ class PHPFSPOT { switch($meta['Orientation']) { case 1: - $rotate = 0; - $flip = false; - break; - + $rotate = 0; $flip = false; break; case 2: - $rotate = 0; - $flip = true; - break; - + $rotate = 0; $flip = true; break; case 3: - $rotate = 180; - $flip = false; - break; - + $rotate = 180; $flip = false; break; case 4: - $rotate = 180; - $flip = true; - break; - + $rotate = 180; $flip = true; break; case 5: - $rotate = 90; - $flip = true; - break; - + $rotate = 90; $flip = true; break; case 6: - $rotate = 90; - $flip = false; - break; - + $rotate = 90; $flip = false; break; case 7: - $rotate = 270; - $flip = true; - break; - + $rotate = 270; $flip = true; break; case 8: - $rotate = 270; - $flip = false; - break; + $rotate = 270; $flip = false; break; } $src_img = @imagecreatefromjpeg($image); - if($src_img) - { - /* grabs the height and width */ - $new_w = imagesx($src_img); - $new_h = imagesy($src_img); + if(!$src_img) { + print "Can't load image from ". $image ."\n"; + return false; + } - // If requested width is more then the actual image width, - // do not generate a thumbnail + /* grabs the height and width */ + $new_w = imagesx($src_img); + $new_h = imagesy($src_img); - if($width >= $new_w) { - imagedestroy($src_img); - return; - } + // If requested width is more then the actual image width, + // do not generate a thumbnail - /* calculates aspect ratio */ - $aspect_ratio = $new_h / $new_w; + if($width >= $new_w) { + imagedestroy($src_img); + return true; + } - /* sets new size */ - $new_w = $width; - $new_h = abs($new_w * $aspect_ratio); + /* calculates aspect ratio */ + $aspect_ratio = $new_h / $new_w; - /* creates new image of that size */ - $dst_img = imagecreatetruecolor($new_w,$new_h); + /* sets new size */ + $new_w = $width; + $new_h = abs($new_w * $aspect_ratio); - imagefill($dst_img, 0, 0, ImageColorAllocate($dst_img, 255, 255, 255)); + /* creates new image of that size */ + $dst_img = imagecreatetruecolor($new_w,$new_h); - /* 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)); + imagefill($dst_img, 0, 0, ImageColorAllocate($dst_img, 255, 255, 255)); - /* needs the image to be flipped horizontal? */ - if($flip) { - print "(FLIP)"; - $image = $dst_img; - for($x = 0; $x < $new_w; $x++) { - imagecopy($dst_img, $image, $x, 0, $w - $x - 1, 0, 1, $h); - } - } + /* 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)); - if($rotate) { - print "(ROTATE)"; - $dst_img = $this->rotateImage($dst_img, $rotate); + /* needs the image to be flipped horizontal? */ + if($flip) { + print "(FLIP)"; + $image = $dst_img; + for($x = 0; $x < $new_w; $x++) { + imagecopy($dst_img, $image, $x, 0, $w - $x - 1, 0, 1, $h); } + } - /* write down new generated file */ + if($rotate) { + print "(ROTATE)"; + $dst_img = $this->rotateImage($dst_img, $rotate); + } - if(!file_exists(dirname($image) ."/thumbs")) - mkdir(dirname($image) ."/thumbs"); + /* write down new generated file */ - $newfile = dirname($image) ."/thumbs/". $width ."_". basename($image); - imagejpeg($dst_img, $newfile, 75); + 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; + } + } - /* free your mind */ - imagedestroy($dst_img); - imagedestroy($src_img); + $newfile = dirname($image) ."/thumbs/". $width ."_". basename($image); + $result = imagejpeg($dst_img, $newfile, 75); + + /* free your mind */ + imagedestroy($dst_img); + imagedestroy($src_img); + + if($result === false) { + print "Can't write thumbnail ". $newfile ."\n"; + return false; } + return true; + } // create_thumbnail() public function get_meta_informations($file) @@ -536,50 +532,43 @@ class PHPFSPOT { } // check_config_table - public function gen_thumbs($idx = 0, $fromcmd = 0) + public function gen_thumb($idx = 0, $fromcmd = 0, $force = 0) { - if(!$idx) { - /* get all available photos */ - $all = $this->getPhotoSelection(); - } - else - $all = Array($idx); - - foreach($all as $photo) { - - $details = $this->get_photo_details($photo); - - $full_path = $this->translate_path($details['directory_path']) ."/". $details['name']; - $file_md5 = md5_file($full_path); + $details = $this->get_photo_details($idx); - if($fromcmd) print "Image ". $details['name'] ." Thumbnails:"; + $full_path = $this->translate_path($details['directory_path']) ."/". $details['name']; + $file_md5 = md5_file($full_path); - /* if the file hasn't changed there is no need to regen the thumb */ - if($file_md5 == $this->getMD5($photo)) { - if($fromcmd) print " file has not changed - skipping\n"; - continue; - } + if($fromcmd) print "Image [". $idx ."] ". $details['name'] ." Thumbnails:"; - /* set the new/changed MD5 sum for the current photo */ - $this->setMD5($photo, $file_md5); + /* if the file hasn't changed there is no need to regen the thumb */ + if(!$force && $file_md5 == $this->getMD5($idx)) { + if($fromcmd) print " file has not changed - skipping\n"; + return; + } - $resolutions = Array( - $this->cfg->thumb_width, - $this->cfg->bubble_width, - $this->cfg->photo_width - ); + $resolutions = Array( + $this->cfg->thumb_width, + $this->cfg->bubble_width, + $this->cfg->photo_width + ); + + $error = 0; - /* create thumbnails for the requested resolutions */ - foreach($resolutions as $resolution) { - if($fromcmd) print " ". $resolution ."px"; - $this->create_thumbnail($full_path, $resolution); - } + /* create thumbnails for the requested resolutions */ + foreach($resolutions as $resolution) { + if($fromcmd) print " ". $resolution ."px"; + if(!$this->create_thumbnail($full_path, $resolution)) + $error = 1; + } - if($fromcmd) print "\n"; + /* set the new/changed MD5 sum for the current photo */ + if(!$error) + $this->setMD5($idx, $file_md5); - } + if($fromcmd) print "\n"; - } // gen_thumbs() + } // gen_thumb() private function getMD5($idx) {