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 );
}