From 9a1fb624fd1089087bd363551ba64f5862d9919f Mon Sep 17 00:00:00 2001 From: polo Date: Fri, 18 Feb 2022 05:38:40 +0100 Subject: miniatures GD --- model/Image.php | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 7 deletions(-) (limited to 'model/Image.php') diff --git a/model/Image.php b/model/Image.php index 8ebcd16..c305984 100644 --- a/model/Image.php +++ b/model/Image.php @@ -5,7 +5,10 @@ class Image { private const MAX_WEIGHT = 2000000; // à adapter au php.ini private $page; - private $ajax = false; // vaut true avec le ckeditor + private $ajax; // vaut true avec le ckeditor + public $path; + public $pathMini; + public $pathInfos; public $erreur; public function __construct($ajax) @@ -13,14 +16,14 @@ class Image // get envoyé avec le javascript $this->page = $_GET['page']; $this->ajax = $ajax; + $this->path = 'data/' . $this->page . '/images/'; + $this->pathMini = 'data/' . $this->page . '/images-mini/'; } // GET // SET - // miniatures des photos - public function upload() { // traitement et enregistrement de l'image @@ -28,14 +31,14 @@ class Image { if ($_FILES['upload']['size'] <= self::MAX_WEIGHT) { - $infos = pathinfo($_FILES['upload']['name']); - $extension = $infos['extension']; + $this->pathInfos = pathinfo($_FILES['upload']['name']); + $extension = $this->pathInfos['extension']; $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'); // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) if (in_array($extension, $extautorisées)) { - move_uploaded_file($_FILES['upload']['tmp_name'], 'data/' . $this->page . '/images/' . $_FILES['upload']['name']); - chmod('data/' . $this->page . '/images/' . $_FILES['upload']['name'], 0666); + move_uploaded_file($_FILES['upload']['tmp_name'], $this->path . $_FILES['upload']['name']); + chmod($this->path . $_FILES['upload']['name'], 0666); } else{$this->erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff
le format svg n\'est pas supporté';} } @@ -57,4 +60,49 @@ class Image echo $chemin; } } + + // miniatures des photos + public function makeThumbnail() + { + if($imageLibrary == 'gd') + { + // des infos sur GD + //print_r(gd_info()); + + // cette fonction fonctionne pour tous les formats + $source = imagecreatefromstring(file_get_contents($this->path . $_FILES['upload']['name'])); + var_dump($source); + + $nomMiniImage = $this->pathMini . $this->pathInfos['filename'] . '-mini.jpg'; + var_dump($nomMiniImage); + + //var_dump($nomMiniImage); + //var_dump(imagesx($image)); + + $forme = imagesy($source) / imagesx($source); + var_dump($forme); + + if(imagesx($source) > 201) + { + // créer un rectangle noir + $destination = imagecreatetruecolor(201, 201 * $forme); + var_dump($destination); + + // sélectionne un rectangle dans l'image source + // et le place dans un rectangle dans la nouvelle + imagecopyresampled($destination, $source, 0, 0, 0, 0, 201, 201 * $forme, imagesx($source), imagesy($source)); + + // envoie l'image dans un fichier + imagejpeg($destination, $nomMiniImage); + } + else + { + imagejpeg($source, $nomMiniImage); + } + } + elseif($imageLibrary == 'imagick') + {} + else + {} + } } \ No newline at end of file -- cgit v1.2.3