page = $_GET['page']; $this->ajax = $ajax; $this->path = 'data/' . $this->page . '/images/'; $this->pathMini = 'data/' . $this->page . '/images-mini/'; } // GET // SET public function upload() { global $maxWeight; // traitement et enregistrement de l'image if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok { if ($_FILES['upload']['size'] <= $maxWeight) { $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'], $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é';} } else { $this->erreur = 'erreur du serveur: le fichier téléchargé est trop lourd, poids max = ' . $maxWeight . ' octets'; } } else { $this->erreur = 'erreur du serveur: le fichier téléchargé est trop lourd, poids max = ' . $maxWeight . ' octets'; } // retour des rêquetes AJAX if($this->ajax && empty($Image->erreur)) { // nouveau chemin à renvoyer en format json $chemin = '{"url": "data/' . $this->page . '/images/' . $_FILES['upload']['name'] . '"}'; echo $chemin; } } // miniatures des photos public function makeThumbnail() { global $imageLibrary; 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'])); $nomMiniImage = $this->pathMini . $this->pathInfos['filename'] . '-mini.jpg'; $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') { $Image = new Imagick($this->path . $_FILES['upload']['name']); // 0 signifie qu'on conserve les proportions $Image->thumbnailImage(201, 0); // écriture dans un fichier $Image->writeImage($this->pathMini . $this->pathInfos['filename'] . '-mini.' . $this->pathInfos['extension']); } else { // utiliser la grande image si il est impossible de créer une miniature // message d'erreur $_SESSION['erreur'] = addslashes("Echec de la création d'une miniature. Vérifier le fichier config.php"); header('Location: index.php?page=' . $this->page . '&erreur=dependance_bibli_images'); exit(); } } }