|
Server IP : 10.111.40.2 / Your IP : 216.73.217.145 Web Server : Apache System : Linux webd002.cluster111.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : comimage ( 586) PHP Version : 7.4.33 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0705) : /home/comimage/referencements.comimage/../taxiplus22.fr/archives/classes/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
class photo{
/*************************************************************************************/
// Cette fonction permet le d'uploader plusieur fichier image
// * @param form Id du formulaire n�cessaire pour g�rer l'upload
// * @param dir Nom du r�pertoire dans lequel on upload le fichier
// * @param size Le poids maximum autoris� en octets, pas de limite si 0
// Elle retourne un tableau de status de chaque upload
// [0] si true le uplaoad est un succes sinon false
// [1] est le nom du fichier uploader renommer si succes sinon le nom fichier d'origine
// [2] si echec upload contient le type d'erreur type, taille sinon l'id de la photo upload�
/*************************************************************************************/
public function uploadImage($form, $dir, $size=0) {
foreach(array_keys($_FILES[$form]["name"]) as $key){
// verifie si chaque upload n'est pas vide
if($_FILES[$form]["error"][$key]==4){
$uploadCheck[] = array(false, $_FILES[$form]['name'][$key], "Pas d'upload", $key);
continue;
}
//verifier l'extension du fichier
$typeFichier = array('png', 'gif', 'jpg', 'jpeg');
if(!in_array(strtolower(substr(strrchr($_FILES[$form]['name'][$key], '.'), 1)), $typeFichier)) {
$uploadCheck[] = array(false, $_FILES[$form]['name'][$key], "erreur type", $key);
continue;
}
//verifier la taille du fichier
if($size > 0) {
if(file_exists($_FILES[$form]['tmp_name'][$key]) && !empty($_FILES[$form]['tmp_name'][$key])){
if(filesize($_FILES[$form]['tmp_name'][$key]) > $size) {
$uploadCheck[] = array(false, $_FILES[$form]['name'][$key], "erreur taille", $key);
continue;
}
}else{
$uploadCheck[] = array(false, $_FILES[$form]['name'][$key], "Erreur upload", $key);
continue;
}
}
//nettoyer le nom de fichier et mettre le fichier temporaire sur son emplacement d�finitif
$nomFichier= time() . '_' . $this->filterName($_FILES[$form]["name"][$key]);
$fichier = $dir . '' . $nomFichier;
move_uploaded_file($_FILES[$form]['tmp_name'][$key], $fichier);
$uploadCheck[] = array(true, $nomFichier, $key);
}
//supprimer les fichiers temporaires
unset($_FILES[$form]);
//retourner le tableau de status d'upload
return $uploadCheck;
}
/********************************************************************************************/
// Cette fonction filtre un nom de fichier pour remplacer les caract�res sp�ciaux ou accentu�s
// @param nom le texte � filtrer
// @return le texte filtr�
/********************************************************************************************/
public function filterName($nom) {
$from = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ');
$to = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y');
$nom = str_replace($from, $to, $nom);
$nom = trim($nom);
$nom = preg_replace('/([^.a-z0-9]+)/i', '-', $nom);
return(strtolower($nom));
}
/*****************************************************************************************/
// Cette fonction redimensionne une image
// @param image le nom du fichier
// @param repertoire le r�pertoire dans lequel se trouve le fichier
// @param largeur largeur cible
// @param hauteur hauteur cible
// @param createNew si true creer une nouvelle image avec la nouvelle dimension
// le nom de la nouvelle image est le meme que le nom que l'original precede de "resize_"
/*****************************************************************************************/
public function resizeImage($image, $repertoire, $largeur, $hauteur, $rogner=true, $createNew = false){
if($largeur == 0 && $hauteur == 0) {
return false;
}
//emplacement du fichier
$fichier = $repertoire . '/' . $image;
//r�cup�rer les propri�t�s de l'image
$param = getimagesize($fichier);
//la source
switch ($param[2]) {
case 1: //gif
$fichierTemp = imagecreatefromgif($fichier);
break;
case 2: //jpg
$fichierTemp = imagecreatefromjpeg($fichier);
break;
case 3: //png
$fichierTemp= imagecreatefrompng($fichier);
break;
default :
break;
}
//redimensionner la photo sans d�former l'image originale
$rlargeur = $hauteur * $param[0] / $param[1];
$rhauteur = $largeur * $param[1] / $param[0];
if($largeur > 0 && $hauteur == 0) {
//cr�er une image pour recevoir le fichier redimensionn�
$redim = imagecreatetruecolor($largeur, ceil($rhauteur));
//on redimensonne suivant la largeur, la hauteur suit
imagecopyresampled($redim,$fichierTemp,0,0,0,0,$largeur,ceil($rhauteur),$param[0],$param[1]);
} elseif ($largeur == 0 && $hauteur > 0) {
//cr�er une image pour recevoir le fichier redimensionn�
$redim = imagecreatetruecolor(ceil($rlargeur), $hauteur);
//on redimensonne suivant la hauteur, la largeur suit
imagecopyresampled($redim,$fichierTemp,0,0,0,0,ceil($rlargeur),$hauteur,$param[0],$param[1]);
} else {
//cr�er une image pour recevoir le fichier redimensionn�
$redim = imagecreatetruecolor($largeur, $hauteur);
$bgc = imagecolorallocate ($fichierTemp, 255, 255, 255);
imagefilledrectangle ($redim, 0, 0, $largeur, $hauteur, $bgc);
if($rogner) { //pas de blanc autour de la photo
if($rhauteur > $hauteur) { //si d�passement hauteur rogner verticalement
imagecopyresampled($redim,$fichierTemp,0,0,0,ceil(($rhauteur - $hauteur) / 2),$largeur,ceil($rhauteur),$param[0],$param[1]);
} else { //d�passement largeur rogner horizontalement
imagecopyresampled($redim,$fichierTemp,0,0,ceil(($rlargeur - $largeur) / 2),0,ceil($rlargeur),$hauteur,$param[0],$param[1]);
}
} else {
if($rhauteur > $hauteur) { //si d�passement hauteur figer la hauteur
//fixer la hauteur et adapter la largeur
imagecopyresampled($redim,$fichierTemp,($largeur - $rlargeur)/2,0,0,0,$rlargeur,$hauteur,$param[0],$param[1]);
} else {
//fixer la largeur, la hauteur suit
imagecopyresampled($redim,$fichierTemp,0,($hauteur - $rhauteur)/2,0,0,$largeur,$rhauteur,$param[0],$param[1]);
}
}
}
//enregistrer le fichier
if($createNew){
$fichier = $repertoire . '/resized_' . $image;
}
switch ($param[2]) {
case 1: //gif
imagegif($redim, $fichier);
break;
case 2: //jpg
imagejpeg($redim, $fichier,100);
break;
case 3: //png
imagepng($redim, $fichier,7);
break;
default :
break;
}
//supprimer les fichiers temporaires
imagedestroy($redim);
imagedestroy($fichierTemp);
return true;
}
public function listCopyrightPhoto($dir){
$list = $this->lister($dir);
if($list){
$str = "<ul>";
foreach($list as $ph){
$str .= "<li>".$ph."</li>";
}
$str .= "</ul>";
return $str;
}else{
return "Pas de crédit photos dans le repertoire $dir";
}
}
private function credit($fichier){
$size = getimagesize($fichier, $info);
$txt="";
//on cherche des infos IPTC sinon on sort.
if (! isset($info["APP13"])) { return false; }
$iptc = iptcparse($info["APP13"]);
if(is_numeric($iptc["2#115"][0])){ //si la source est num�rique, alors c'est Fotolia
$txt="© <a href=\"http://www.fotolia.com/id/".$iptc["2#115"][0]."\" target=\"_blank\">".$iptc["2#110"][0]."</a> - Fotolia.com";
}else{ //sinon c'est iStock
if($iptc["2#110"][0]){
$txt=$iptc["2#110"][0]; // affiche le cr�dit
}else if($iptc["2#116"][0]){
$txt=$iptc["2#116"][0]; // affiche le copyright
}else if($iptc["2#080"][0]){
$txt=$iptc["2#080"][0]; // affiche le nom du photographe
}
if ($txt!=""){
$txt="© <a href=\"http://www.istockphoto.com\" target=\"_blank\">iStockphoto.com</a> - ".$txt; // affiche le cr�dit
}
}
return $txt;
}
private function lister($chemin){
$ext="jpg";
$nom_repertoire = $chemin;
$pointeur = opendir($nom_repertoire);
while ($fichier = readdir($pointeur)){
if(($fichier != '.') && ($fichier != '..')){
if (is_dir($nom_repertoire.'/'.$fichier)){
$this->lister($nom_repertoire.'/'.$fichier);
}else{
$extension = end(explode(".", $fichier));
if ($ext == $extension){
$wrt=$this->credit($nom_repertoire."/".$fichier);
if ($wrt && $wrt!=""){
$listPh[] = $wrt;
}
}
}
}
}
closedir($pointeur);
if(isset($listPh)){
return $listPh;
}else{
return false;
}
}
public function showPhoto($img, $width, $height, $alt){
}
}// fin classe photo
?>