Dessiner/Siner une image en .NET

Signaler
Messages postés
126
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
7 décembre 2009
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Bonjour,

Je voudrais signer un photo avant de l'afficher mais sans l'enregistrer.

Cela est-il possible ?

J'ai trouvé une source qui correspond a ce que je voudrais sauf que l'image est enregistrer :
http://www.aspfr.com/codes/CLASSE-SYSTEM-DRAWING-OU-COMMENT-DESSINER-AVEC-ASP_9029.aspx

Quelau'un a t il une solutions ?

Merci d'avance

1 réponse

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Si j'ai bien compris, tu veux écrire quelque chose sur l'image avant de l'afficher et sans la sauvegarder ?

A mon avis,
Il faut passer par une page de chargement d'une image temporaire :

// L'image de départ
Bitmap bm = new Bitmap(ResolveUrl("~/img/image.bmp"));
Graphics g = Graphics.FromImage(bm);

// Ecrit dessus
Font f = new Font("Verdana", 8);
g.DrawString("un texte", f, Brushes.White, X, Y);

// Sauve img temporaire en gif (sera écrasée au prochain appel)
HttpRequest http = Context.Request;
string path = http.MapPath(http.ApplicationPath) + "[file://\\img \\img]\";
bm.Save(path + "imgTemp.gif", ImageFormat.Gif);

// Appelle une page de chargement de l'img temp
Response.Write("")

f.Dispose();
g.Dispose();
bm.Dispose();

// --------------------------------------------------------------------------
// La page de chargement : LoadImage.aspx :
// Simplement créer une webForm vide par visualStudio et dans le
// code behind faire une réponse binaire des octets de l'image :

private void Page_Load(object sender, System.EventArgs e)
{
      string fileName = Request.QueryString["src"];
      string filePath = Request.QueryString["path"];
      string fullPath = filePath + "\" + fileName;


      FileStream fileStream = new FileStream(fullPath, FileMode.Open);
      long fileSize = fileStream.Length;
      byte[] buffer = new byte[fileSize];
   
      fileStream.Read(buffer, 0, (int)fileSize);
      fileStream.Close();


      Response.BinaryWrite(buffer);
}

Voilà, j'ai pas testé mais ça devrait marcher.
Désolé mais c'est du C#, facilement transcriptible en vb.