0

次の問題があります: C# および .aspx ページを使用しています。.aspx ページに GridView があります。GridView データソースを次のように設定します。

GridView1.DataSource = PictureInfo.PictureInfoList;

私の「PictureInfo」クラスは次のようになります。

public class PictureInfo
{

    public static List<PictureInfo> PictureInfoList = new List<PictureInfo>();

    public string PictureDescription { get; set; }
    public byte[] Picture { get; set; }
}

GridView で "byte[] Picture" にある画像を表示する方法はありますか? またはどのような方法で可能ですか?データベースに送信する前に、この方法でデータを保存しています。そして、データベースに送信する前に GridView に表示したいと思います。ご覧のとおり、私は初心者ですが、これを機能させることができれば非常に嬉しく思います。オンラインでいくつかの解決策を読んだことで頭がいっぱいになりましたが、今まで何も役に立ちませんでした。

どうもありがとうございます

4

3 に答える 3

0

あなたのhandler.ashxに

public void ProcessRequest(HttpContext context)

{

 context.Response.ContentType = "image/jpeg";
 string ImageID=request["ID"];
 //byte[] ImageByte=pictureInfo.Picture;//local imageByte
 byte[] ImageByte=getImage(ImageId);//image byte from any other sour,e.g database
 Stream strm = new MemoryStream(ImageByte));
 long length = strm.Length;
 byte[] buffer = new byte[length];
 int byteSeq = strm.Read(buffer, 0, 2048);

 while (byteSeq > 0)
 {
       context.Response.OutputStream.Write(buffer, 0, byteSeq);
       byteSeq = strm.Read(buffer, 0, 2048);
  }

}

次のよう に、グリッドビュー内で asp:image の画像 URL を設定します。

Image1.ImageUrl = "somthing.ashx?ID="+userImageID;

画像を表示するための一意の ID があることを願っています。これですべての設定が完了したことを願っています。コメントや質問もよく来ます。

データベースから画像バイトを取得する

public  byte[] GetImage(string ImageId)
{ byte[] img = null;
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SlikaHendler";
cmd.Parameters.AddWithValue("@Id", ImageId);
cmd.Connection = yourConnection();
SqlDataReader dr = null;
dr = cmd.ExecuteReader();
if (dr.Read())
{
    img = (byte[])dr[0];
}
dr.Close();
return img;//returns array of byte
}
于 2013-07-07T14:46:31.583 に答える
-1

写真はバイナリとしてデータベースに記録されることは知っています。この側面では、問題は「バイナリからバイトへの変換」に変わります。

画像情報をバイナリデータで取得できる場合は、1バイトを3桁として変換し、バイトとして変換して表示することができます。

http://en.wikipedia.org/wiki/ASCII

于 2013-06-27T20:09:34.973 に答える