美文网首页
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