我有一个自定义类型的集合,如下所示:
[DataContract]
public class PhotoDC
{
public PhotoDC();
[DataMember]
public byte[] ImagebyteArray { get; set; }
[DataMember]
public string Name { get; set; }
}
我想在网络表单上显示所有项目(图像和名称),我想知道哪些控件可以使用,以及如何将字节数组转换为图像?
答案 0 :(得分:1)
ASP.NET中没有内置控件可以直接指定字节数组来显示图像。您可以做的是,只需编写一个自定义的HttpHandler,它将“Name”作为参数,并将字节数组作为二进制响应发送给具有相应http响应头的客户端。
Here是自定义http处理程序的示例。在此示例中,图像是使用文件流从文件构建的。
答案 1 :(得分:0)
我会使用带有标签的Repeater
控件和带有Item模板的Image控件。
以下转换为和来自和byteArray。
/// <summary>
/// Converts an Image to Byte array
/// </summary>
/// <param name="imageIn">Image to convert</param>
/// <returns>byte array</returns>
public static byte[] ImageToByteArray(Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
/// <summary>
/// Converts an Byte array to and Image
/// </summary>
/// <param name="byteArrayIn">byre array</param>
/// <returns>Image</returns>
public static Image ByteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
var returnImage = Image.FromStream(ms);
return returnImage;
}
此link表示您必须将内存流绑定到asp.net图像控件。