Deltacms/module/album/plugins/thumbnailer.php

71 lines
1.7 KiB
PHP

<?php
/* création des miniatures par @Lionel 2019
* modification le 08 octobre 2023
*/
if (!isset($_GET['img']))
{
exit(0);
}
$img = '../../../'.$_GET['img'];
if ( is_file($img) && substr(mime_content_type($img), 0, 5) == 'image' ) {
function makeDir($dir) {
if ( (!is_dir($dir)) || (!file_exists($dir)) )
mkdir($dir,0755,true);
}
$ratio = 200;
$size_img = filesize($img);
$dossiercache = '../../../site/file/cache';
makeDir($dossiercache);
$par = substr(strrchr($img, '/'), 1);
$url_par = str_replace('/'.$par,'',$img);
$cache = substr(strrchr($url_par, '/'), 1);
makeDir($dossiercache.'/'.$cache);
$extension = strrchr($par,'.');
$vignette = str_replace($extension,'',$par);
$miniature = $dossiercache.'/'.$cache.'/'.$vignette.'-'.$size_img.'.webp';
if(!file_exists($miniature)) {
$imginfo = getimagesize($img);
$largeur = $imginfo[0];
$hauteur = $imginfo[1];
$type = $imginfo[2];
if($type == 1)
{
$src = imagecreatefromgif($img);
}
elseif($type == 2)
{
$src = imagecreatefromjpeg($img);
}
elseif($type == 3)
{
$src = imagecreatefrompng($img);
}
elseif($type == 18)
{
$src = imagecreatefromwebp($img);
}
imageinterlace($src, true);
if ($largeur > $hauteur)
{
$im = imagecreatetruecolor(round(($ratio/$hauteur)*$largeur), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$hauteur)*$largeur), $ratio, $largeur, $hauteur);
}
else
{
$im = imagecreatetruecolor($ratio, round(($ratio/$largeur)*$hauteur));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($hauteur*($ratio/$largeur)), $largeur, $hauteur);
}
imagewebp($im, $miniature, 80);
imagedestroy($im);
}
header('Content-Type: image/webp');
$data = file_get_contents($miniature);
echo $data;
clearstatcache();
}
else {echo 'This is not an image';}
?>