diff --git a/module/album/album.php b/module/album/album.php index ee8eb5f..1dd7ff8 100644 --- a/module/album/album.php +++ b/module/album/album.php @@ -5,7 +5,7 @@ */ setlocale(LC_NUMERIC,'English','en_US','en_US.UTF-8'); class album extends common { - const VERSION = '4.0'; + const VERSION = '4.3.2'; const REALNAME = 'Album Photo'; const DELETE = true; const UPDATE = '0.0'; @@ -15,15 +15,10 @@ class album extends common { const SORT_HAND = 'SORT_HAND'; public static $directories = []; - public static $firstPictures = []; - public static $galleries = []; - public static $galleriesId = []; - public static $pictures = []; - public static $picturesId = []; public static $actions = [ @@ -529,6 +524,7 @@ class albumHelper extends helper { else { return false; } } } + // relevés exif gps des photos public static function gps_exif($foto) { if (!preg_match('/(\.jpe?g)$/i', $foto)) { @@ -572,26 +568,43 @@ class albumHelper extends helper { $sign = ($hemisphere == 'W' || $hemisphere == 'S') ? -1 : 1; return $sign * ($degrees + $minutes/60 + $seconds/3600); } + // formatage light des noms d'images public static function formate($foto) { $foto = trim($foto); $foto = preg_replace('/[^[:alnum:]_.\-\/]/', '', $foto); return $foto; - } - // reorientation + } + + // renommage des fichiers transformés + public static function renamePic($foto) { + $imor = basename($foto); + $extension = strrchr($imor,'.'); + $namimor = str_replace($extension,'',$imor); + $redimg = dirname($foto).'/'.$namimor.'_t960.jpg'; + return $redimg; + } + + // backup des images réorientées ou redimensionnées + public static function backUp($foto) { + $backup = dirname($foto).'/backup'; + self::makeDir($backup); + $backimg = $backup.'/'.strtolower(str_replace('.jpeg','.jpg',basename($foto))); + rename($foto,$backimg); + } + + // réorientation public static function reorientation($foto) { $size = @getimagesize($foto); $mime = $size['mime']; - if ((function_exists('exif_read_data')) && ($mime == 'image/jpeg')) - { + // seules les images/jpeg sont réorientées + if ((function_exists('exif_read_data')) && ($mime == 'image/jpeg')) { $exif = @exif_read_data($foto); $image = imagecreatefromstring(file_get_contents($foto)); if ($image !== false) { $orientation = isset($exif['Orientation']) === true ? $exif['Orientation'] : ''; - if ( (!empty($orientation)) && ($orientation != 1) ) - { - switch($orientation) - { + if ( (!empty($orientation)) && ($orientation != 1) ) { + switch($orientation) { case 3: $image = imagerotate($image,180,0); break; @@ -602,28 +615,24 @@ class albumHelper extends helper { $image = imagerotate($image,90,0); break; } - imagejpeg($image, $foto, 90); - } + imagejpeg($image, self::renamePic($foto), 80); + self::backUp($foto); + echo ''; + exit('Réorientation des photos...'); + } } } } + // redimension public static function redimension($foto) { - $max_size = 960;// ex1280 dimension du plus petit côté + $max_size = 960;// dimension du plus petit côté $infoto = @getimagesize($foto); $large = $infoto[0]; $haut = $infoto[1]; $type = $infoto[2]; // seules les images/jpeg sont redimensionnées if (($type == 2) && ($large > $max_size) && ($haut > $max_size)) { - $imar = substr(strrchr($foto, '/'), 1); - $urlimar = str_replace($imar,'',$foto); - $backup = $urlimar.'backup'; - self::makeDir($backup); - $extension = strrchr($imar,'.'); - $namimar = str_replace($extension,'',$imar); - $redimg = $urlimar.$namimar.'_t960.jpg'; - $backimg = $backup.'/'.strtolower(str_replace('.jpeg','.jpg',$imar)); $src = imagecreatefromjpeg($foto); imageinterlace($src, true); if ($large > $haut) { @@ -633,18 +642,23 @@ class albumHelper extends helper { $im = imagecreatetruecolor($max_size, round(($max_size/$large)*$haut)); imagecopyresampled($im, $src, 0, 0, 0, 0, $max_size, round($haut*($max_size/$large)), $large, $haut); } - imagejpeg($im, $redimg, 80); - imagedestroy($im); - rename($foto,$backimg); + if (strpos($foto, 't960.') == false) { + imagejpeg($im, self::renamePic($foto), 80); + imagedestroy($im); + self::backUp($foto); + } else { + imagejpeg($im, $foto, 80); + imagedestroy($im); + } echo ''; - exit(0); + exit('Redimension des photos...'); } } + // contrôle des photos public static function controle($foto) { - $tn_tmp = substr(strrchr($foto, '/'), 1); - $url_picture = str_replace('/'.$tn_tmp,'',$foto); - $minidos = substr(strrchr($url_picture, '/'), 1); + $tn_tmp = basename($foto); + $minidos = substr(strrchr(dirname($foto), '/'), 1); $mini = 'site/file/cache/'.$minidos.'/'.$tn_tmp; if (!file_exists($mini)) { $valid = array('-', '_','.'); @@ -652,7 +666,7 @@ class albumHelper extends helper { $nommage = self::formate($foto); $foto = rename($foto,$nommage); echo ''; - exit(0); + exit('Renommage des photos...'); } else { self::reorientation($foto); self::redimension($foto); @@ -661,6 +675,7 @@ class albumHelper extends helper { return $foto; clearstatcache(); } + // Thumbnailer public static function makeThumbnail($foto) { if ( is_file($foto) && substr(mime_content_type($foto), 0, 5) == 'image' ) { @@ -671,9 +686,8 @@ class albumHelper extends helper { $size_img = filesize($foto); $dossiercache = 'site/file/cache'; self::makeDir($dossiercache); - $par = substr(strrchr($foto, '/'), 1); - $url_par = str_replace('/'.$par,'',$foto); - $cache = substr(strrchr($url_par, '/'), 1); + $par = basename($foto); + $cache = substr(strrchr(dirname($foto), '/'), 1); self::makeDir($dossiercache.'/'.$cache); $extension = strrchr($par,'.'); $vignette = str_replace($extension,'',$par); @@ -682,14 +696,12 @@ class albumHelper extends helper { if (!file_exists($miniature)) { list($width, $height, $type, $attr) = getimagesize($foto); - if ($height > $tnhaut) - { + if ($height > $tnhaut) { $convert = $tnhaut/$height; $height = $tnhaut; $width = ceil($width*$convert); } - if ($width > $tnlarge) - { + if ($width > $tnlarge) { $convert = $tnlarge/$width; $width = $tnlarge; $height = ceil($height*$convert); @@ -698,25 +710,21 @@ class albumHelper extends helper { $largeur = $width; $hauteur = $height; - if($type == 1) - { + if($type == 1) { $img_in = imagecreatefromgif($foto); } - elseif($type == 2) - { + elseif($type == 2) { $img_in = imagecreatefromjpeg($foto); } - elseif($type == 3) - { + elseif($type == 3) { $img_in = imagecreatefrompng($foto); } - elseif($type == 18) - { + elseif($type == 18) { $img_in = imagecreatefromwebp($foto); } imageinterlace($img_in, true); - $img_out = imagecreatetruecolor($largeur, $hauteur) or die ('Impossible de créer un flux d\'image GD'); + $img_out = imagecreatetruecolor($largeur, $hauteur) or die ('Unable to create a GD image stream'); imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in)); imagewebp($img_out, $miniature, 80); @@ -725,8 +733,7 @@ class albumHelper extends helper { return $miniature; clearstatcache(); } - else {echo 'This is not an image';} + else { die ('This is not an image'); } } // makeThumbnail } // albumHelper -