2009-12-04 2 views
0

je dessine une image et outputing à la page Web en utilisant le code suivant:comment écrire du texte et une image à un Response.OutputStream dans ASP.NET

Bitmap image = new Bitmap(350, 350); 
Graphics g = Graphics.FromImage(image); 
// code using g to draw image here 
image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); 

Cela fonctionne très bien. Maintenant, je voudrais ajouter un peu de texte à la sortie (javascript). Cependant, quand je le fais *, soit le texte n'est pas affiché, soit l'image est rejetée.

Quelle est la bonne façon de le faire?

(* - J'ai changé le contenttype et utilisé reponse.write également essayé d'écrire un tableau d'octets de texte à la outputstream..)

+1

Vous ne pouvez pas mélanger un GIF et du code JavaScript dans la même réponse à une requête HTTP. – dtb

+0

Je pensais autant. Je cherchais à éviter d'écrire l'image sur le disque et d'utiliser une balise img. –

+0

Vous n'êtes pas obligé. Comme l'a souligné @Lou Franco, il suffit de le diviser en deux demandes. – dtb

Répondre

3

Vous devez répondre avec HTML qui a votre Javascript et une balise <img> qui provoque une autre requête où vous répondez avec cette image.

Modifier probablement le <img> qui demande cette image à un avec src défini à la demande.

Alternativement, il pourrait s'agir d'une balise <script> à laquelle vous renvoyez du JavaScript et de l'ajouter au fichier DOM.

+0

Je peux référencer l'image dans le tag img comme ceci dans une autre page? –

+0

que vous pouvez faire cela. vois ma réponse. –

3

Si vous voulez toujours faire cela en une seule requête, alors http://danielmclaren.net/2008/03/embedding-base64-image-data-into-a-webpage pourrait être le meilleur moyen de le faire. Il implique des données codées en base64 directement dans l'attribut src de la balise img. à savoir

<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." /> 
+1

Cela fonctionne bien, mais pas pris en charge par tous les navigateurs, alors assurez-vous de tester à l'avance. – JamesEggers

+0

Je pensais faire cela, mais je ne pouvais pas trouver une ressource sur la façon de le faire de cette façon. Merci! –

3

vous pouvez écrire un fichier séparé appelé imageGrab.aspx votre code d'image et d'appeler celui-ci dans un autre fichier javascript. Cela devrait fonctionner correctement. Par exemple

<img border=0 height=150 src='ImageGrab.aspx?seqid=3'> 

imageGrab.aspx.cs se ressemble

public partial class ImageGrab : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      byte[] byteData = new byte[0]; 

      // fetch the value of parameter into the byte array 

      string seq_id = Request.QueryString["seqid"]; 

      if (string.IsNullOrEmpty(seq_id)) 
      { 
       seq_id = "214"; 
      } 


      byteData = DBManager.GetBinaryData(seq_id); 

      Response.Clear(); 

      Response.ContentType = "image/jpeg"; 
      Response.BinaryWrite(byteData); 
      Response.End(); 
     } 
     catch (Exception exc) 
     { 
      Response.Write(exc.Message); 
     } 
    } 

} 
Questions connexes