if($tab_infos==FALSE) { FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name); exit('Erreur : le fichier image ne semble pas valide !'); } list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos; $tab_extension_types = array( IMAGETYPE_GIF=>'gif' , IMAGETYPE_JPEG=>'jpeg' , IMAGETYPE_PNG=>'png' ); // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants // vérifier le type if(!isset($tab_extension_types[$image_type])) { FileSystem::supprimer_fichier(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name); exit('Erreur : le fichier transmis n\'est pas un fichier image (type '.$image_type.') !'); } $image_format = $tab_extension_types[$image_type]; // stocker l'image dans la base DB_STRUCTURE_IMAGE::DB_modifier_image( $user_id , 'signature' , base64_encode(file_get_contents(CHEMIN_DOSSIER_IMPORT.FileSystem::$file_saved_name)) , $image_format , $image_largeur , $image_hauteur ); // Générer la balise html et afficher le retour list($width,$height) = dimensions_affichage_image( $image_largeur , $image_hauteur , 200 /*largeur_maxi*/ , 200 /*hauteur_maxi*/ ); $user_texte = ($user_id) ? 'Signature '.$user_texte : $user_texte ; exit('<li id="sgn_'.$user_id.'">'.html($user_texte).' : <img src="'.URL_DIR_IMPORT.FileSystem::$file_saved_name.'" alt="'.html($user_texte).'" width="'.$width.'" height="'.$height.'" /><q class="supprimer" title="Supprimer cette image (aucune confirmation ne sera demandée)."></q></li>'); } // //////////////////////////////////////////////////////////////////////////////////////////////////// // Supprimer un fichier image (tampon de l'établissement ou signature) // //////////////////////////////////////////////////////////////////////////////////////////////////// if( ($action=='delete_signature') && ($user_id>=0) ) { DB_STRUCTURE_IMAGE::DB_supprimer_image( $user_id , 'signature' ); exit('ok'); }
/** * Traiter un fichier photo : le vérifier, redimensionner l'image, enregistrer en BDD son contenu, effacer les fichiers correspondants * * @param int $user_id * @param string $fichier_chemin * @return string|array un message d'erreur ou un tableau avec [ contenu_base_64 , largeur , hauteur ] */ function photo_file_to_base($user_id,$fichier_chemin) { // vérifier la conformité du fichier image, récupérer les infos le concernant $tab_infos = @getimagesize($fichier_chemin); if($tab_infos==FALSE) { FileSystem::supprimer_fichier($fichier_chemin); return'le fichier image ne semble pas valide'; } list($image_largeur, $image_hauteur, $image_type, $html_attributs) = $tab_infos; $tab_extension_types = array( IMAGETYPE_GIF=>'gif' , IMAGETYPE_JPEG=>'jpeg' , IMAGETYPE_PNG=>'png' ); // http://www.php.net/manual/fr/function.exif-imagetype.php#refsect1-function.exif-imagetype-constants // vérifier le type if(!isset($tab_extension_types[$image_type])) { FileSystem::supprimer_fichier($fichier_chemin); return'le fichier transmis n\'est pas un fichier image'; } // vérifier les dimensions if( ($image_largeur>1024) || ($image_hauteur>1024) ) { FileSystem::supprimer_fichier($fichier_chemin); return'le fichier transmis a des dimensions trop grandes ('.$image_largeur.' sur '.$image_hauteur.')'; } if( ($image_largeur==0) && ($image_hauteur==0) ) { FileSystem::supprimer_fichier($fichier_chemin); return'le fichier transmis a des dimensions indéterminables'; } // C'est bon, on continue $fichier_chemin_vignette = $fichier_chemin.'.mini.jpeg'; $image_format = $tab_extension_types[$image_type]; $coef = PHOTO_DIMENSION_MAXI / max($image_largeur,$image_hauteur); $largeur_new = round($image_largeur*$coef); $hauteur_new = round($image_hauteur*$coef); $image_new = function_exists('imagecreatetruecolor') ? imagecreatetruecolor($largeur_new,$hauteur_new) : imagecreate($largeur_new,$hauteur_new) ; $couleur_fond = imagecolorallocate($image_new,255,255,255); // Le premier appel à imagecolorallocate() remplit la couleur de fond si imagecreate(). $couleur_fill = imagefill($image_new, 0, 0, $couleur_fond); // Si imagecreatetruecolor(), l'image est noire et il faut la remplir explicitement. $image_depart = call_user_func( 'imagecreatefrom'.$image_format, $fichier_chemin ); imagecopyresampled($image_new , $image_depart , 0 /* dest_x */ , 0 /* dest_y */ , 0 /* dep_x */ , 0 /* dep_y */ , $largeur_new , $hauteur_new , $image_largeur , $image_hauteur ); imagedestroy($image_depart); imagejpeg($image_new , $fichier_chemin_vignette , JPEG_QUALITY ); imagedestroy($image_new); // stocker l'image dans la base $image_contenu_base_64 = base64_encode(file_get_contents($fichier_chemin_vignette)) ; DB_STRUCTURE_IMAGE::DB_modifier_image( $user_id , 'photo' , $image_contenu_base_64 , 'jpeg' , $largeur_new , $hauteur_new ); // effacer les fichiers images FileSystem::supprimer_fichier($fichier_chemin); FileSystem::supprimer_fichier($fichier_chemin_vignette); // retour des informations return array( $image_contenu_base_64 , $largeur_new , $hauteur_new ); }