美文网首页
C# 转换 Blob 对象为图片

C# 转换 Blob 对象为图片

作者: Messix_1102 | 来源:发表于2019-12-24 16:03 被阅读0次

概述

在数据对接时,经常需要把数据库(如:MySql, Oracle)中的blob对象转换为图片格式,对于C#处理这些问题有疑问的同学可以继续往下看(本文以MySql为测试数据库)。

一、如何给数据库Blob字段插入数据

数据库中Blob对象对应C#的类型为byte数组,定义数据库对象如下:

public class UserEntity
{
    public int id { get; set;}
    public string name { get; set; }
    public byte[] avator { get; set; }
}

下面测试可以将本地图片文件作为资源,转换为字节流赋值给Blob字段:

UserEntity userEntity = new UserEntity()
{
    name = "Tom"
};
using (FileStream stream = new FileStream("D:\\avator.png", FileMode.Open))
{
    userEntity.avator = new byte[stream.Length];
    stream.Read(userEntity.avator);
}

将上一步创建的数据库对象 UserEntity 调用封装好的插入数据库方法

public void Insert(UserEntity userEntity)
{
    string sql = "INSERT INTO `user` (`name`, `avator`) VALUES (@name, @avator)";
    connectionFactory.GetConnection().ExecuteCommand(sql, new { name= userEntity.name, avator  = userEntity.avator });
}

插入成功,结果如下


插入数据库结果

二、如何把数据库Blob字段转换为文件保存在本地

先获取前一步插入的用户数据,然后把头像字段写到文件

UserEntity userEntity = new UserRepository().GetUser("tom");
using (FileStream fs = new FileStream("D:\\avatorBlob_fromdb.png", FileMode.OpenOrCreate))
{
    fs.Write(userEntity.avator);
    fs.Flush();
}

结果如下,可以直接查看图片


转换为图片结果

三、html img 元素如何直接展示 数据库blob 对象

给img src属性前加上 “data:image/png;base64,” 注意,blob字符串和类型之间有逗号

<img src="data:image/png;base64,iVBORw0KGgoAAA.../img>

相关文章

网友评论

      本文标题:C# 转换 Blob 对象为图片

      本文链接:https://www.haomeiwen.com/subject/jlrfoctx.html