2017-02-20 78 views

回答

1

可以使用GetInputStream方法加载图像:

using (var stream = _customer.Photo.GetInputStream() 
{ 
    pictureBox1.Image = Image.FromStream(stream); 
} 
+0

感谢您的示例! –

0

使用来自ImageConverter级扩展的方法保存和图像值的负荷可以很容易,即:

pictureBoxLogo.Image.saveImage(obj.Photo); 
    pictureBoxLogo.Image = ((Image)null).loadImage(obj, obj.Photo); 

这里如何Converter-Class可能如下所示:

... 
using System.IO; 
using CodeFluent.Runtime.BinaryServices; 

public static class ImageConverter 
{ 
    public static byte[] toByteArray(this Image image) 
    { 
     using (var ms = new System.IO.MemoryStream()) 
     { 
      image.Save(ms, image.RawFormat); 
      return ms.ToArray(); 
     } 
    } 

    public static Image toImage(this byte[] bytesArr) 
    { 
     MemoryStream memstr = new MemoryStream(bytesArr); 
     Image img = Image.FromStream(memstr); 
     return img; 
    } 

    public static Image loadImage(object entity, BinaryLargeObject image) 
    { 
     if (entity != null && image != null) 
     { 
      using (var stream = image.GetInputStream()) 
      { 
       if (stream.Length > 0) 
        return Image.FromStream(stream); 
       else 
        return null; 
      } 
     } 
     else 
      return null; 
    } 

    public static Image loadImage(this Image owner, object entity, BinaryLargeObject image) 
    { 
     return loadImage(entity, image); 
    } 

    public static void saveImage(this Image owner, BinaryLargeObject image) 
    { 
     if (owner != null && image != null) 
      image.Save(owner.toByteArray()); 
    } 
}