【问题标题】:How to store c# imagesource into database ?如何将 c# imagesource 存储到数据库中?
【发布时间】:2015-07-30 02:50:57
【问题描述】:

如何将BitmapImage类型ImageSource存入图片类型数据库

【问题讨论】:

  • 在大多数情况下这是一个不好的做法。为什么不存储图片路径呢?
  • 您是在问如何将图像数据存储在 sql 数据库中?
  • 如果需要,将其存储在blob类型的字段中。
  • @Raptor 图像路径对这种情况没有用处。需要将图像存储到数据库中。必须将 imagesource 转换为 byte[] 或其他一些数据类型。但是没有正确的方法将 imagesource 转换为 byte[] 或其他。将图像存储为“图像”数据类型也需要一些转换。

标签: c# sql wpf c#-4.0 wpf-controls


【解决方案1】:

只需将其转换为字节数组并将您在 DB 中的图像定义为 varbinary(MAX)
您可以使用此代码:

public static Byte[] ConvertToByteFromBitmapImage(BitmapImage bitmapImage)
{
    byte[] data;
    JpegBitmapEncoder encoder = new JpegBitmapEncoder();

    encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
    using(MemoryStream ms = new MemoryStream())
    {
        encoder.Save(ms);
        data = ms.ToArray();
    }

    return data;
}

注意:您可以使用 ans 简单地将 BitmapImage 转换为 ImageSource

【讨论】:

    【解决方案2】:
    Stream stream = File.OpenRead("<your filePath>");
     var buffer = new byte[stream.Length]; 
     stream.Read(buffer, 0, (int) stream.Length);
    

    现在您可以将缓冲区保存到数据类型为 varbinary(MAX) 的列中。 如果您将它们存储在块中,那就太好了。

    【讨论】:

    • 简单得多:var buffer = File.ReadAllBytes(...);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    相关资源
    最近更新 更多