diff --git a/module/album/album.php b/module/album/album.php index 08146c9..ee8eb5f 100644 --- a/module/album/album.php +++ b/module/album/album.php @@ -362,7 +362,7 @@ class album extends common { template::text('legend[' . $fileInfos->getFilename() . ']', [ 'value' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'legend', str_replace('.','',$fileInfos->getFilename())]) ]), - 'miniature' + 'miniature' ]; self::$picturesId [] = str_replace('.','',$fileInfos->getFilename()); } @@ -516,10 +516,11 @@ class album extends common { } } +/* ********************** albumHelper ********************** */ class albumHelper extends helper { - // dossier backup + // création des dossiers public static function makeDir($rep) { if (is_dir($rep)) { return true; @@ -660,5 +661,72 @@ 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' ) { + // taille des miniatures + $tnlarge = 320; + $tnhaut = ($tnlarge/1.6); + + $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); + self::makeDir($dossiercache.'/'.$cache); + $extension = strrchr($par,'.'); + $vignette = str_replace($extension,'',$par); + $miniature = $dossiercache.'/'.$cache.'/tn-'.$vignette.'-'.$size_img.'.webp'; + + if (!file_exists($miniature)) { + list($width, $height, $type, $attr) = getimagesize($foto); + + if ($height > $tnhaut) + { + $convert = $tnhaut/$height; + $height = $tnhaut; + $width = ceil($width*$convert); + } + if ($width > $tnlarge) + { + $convert = $tnlarge/$width; + $width = $tnlarge; + $height = ceil($height*$convert); + } + + $largeur = $width; + $hauteur = $height; + + if($type == 1) + { + $img_in = imagecreatefromgif($foto); + } + elseif($type == 2) + { + $img_in = imagecreatefromjpeg($foto); + } + elseif($type == 3) + { + $img_in = imagecreatefrompng($foto); + } + 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'); + 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); + imagedestroy($img_out); + } + return $miniature; + clearstatcache(); + } + else {echo 'This is not an image';} + } // makeThumbnail + +} // albumHelper