自动生成一个验证码后将其放在内存中,这是生成验证码图片的方法定义:
protect Image CreateValidateCodeImg(){}然后我定义了一个Image对象
Image myImage = CreateValidateCodeImg();然后将该图片放在内存中:
MemoryStream ms=new MemoryStream();
myImage.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); 怎样才能将存在内存中的图片直接在一个Image控件显示出来.

解决方案 »

  1.   

    Response.ClearContent(); 
    Response.ContentType = "image/jpg"; 
    Response.BinaryWrite(ms.ToArray()); //将图像输出的页面
      

  2.   

    我不是想将图片输到页面,是想直接在Image控件上显示啊.
      

  3.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.IO;namespace news
    {
    /// <summary>
    /// showpic 的摘要说明。
    /// </summary>
    public class showpic : System.Web.UI.Page
    {
    SqlConnection myCon;
    SqlCommand myCmd;
    public void showPic()
    {
    byte [] pictureData = null;
    string SQLconStr = ConfigurationSettings.AppSettings["NEWS"].ToString();
    string selectStr = "select * from news where newsID='"+Session["getting"].ToString().Trim()+"'";
    myCon = new SqlConnection(SQLconStr);
    myCon.Open();
    //建立关系
    myCmd = new SqlCommand(selectStr,myCon);
    //实例化数据适配器
    SqlDataReader dr = myCmd.ExecuteReader();
    if(dr.Read())
    {
    pictureData =(byte[])dr["newsImage"];
    Response.ContentType = dr["picType"].ToString();
    }
    dr.Close();
    myCon.Close();
    Response.ClearContent();
    Response.AppendHeader("content-length",pictureData.Length.ToString());
    Response.BinaryWrite(pictureData);
    Response.End();
    }
    private void Page_Load(object sender, System.EventArgs e)
    {
     showPic();
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }
    ///////////////////////////////////
    然后在
    Image1.ImageUrl = "showpic.aspx";
    这个方法是先把图片存入到数据库,在从数据库中读取出来哈
    和你讲的哪个问题差不多,你看看应该会的哈
      

  4.   

    private Image GetPhoto(object photo)
    {
    if (photo == System.DBNull.Value)
    return null;
    try
    {
    return new Bitmap(new System.IO.MemoryStream((byte[])photo));
    }
    catch
    {
    return null;
    }
    }
      

  5.   

    那你能告诉我你的图片是放在什么地方在吗??
    Image1有个ImageUrl属性哈,你可以修改这个值来达到显示图片的目的 
      

  6.   

    图片是放在内存啊,因为我不想将图片存在硬盘里,假如存在硬盘里用ImageURl属性就很方便了.
      

  7.   

    在内存中还是以2进制流的形式储存的啊,那你就必须通过一个页面来专门读取这个流,然后在用Image1.ImageUrl = "读取流的页面地址";来实现图片的显示。
      

  8.   

    我以前也是用一个专门的页面的,就是用<img alt="image" src="ValidateCode.aspx" />,不过我就想在一个页面中完成,不过真没办法的话也就只能用一个专门的页面了.