C#将image中的显示的图片转换成二进制

简介: 原文:C#将image中的显示的图片转换成二进制 1.将Image图像文件存入到数据库中 我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中. View Code //将本地图片转换成二进制保存起来 ...
原文: C#将image中的显示的图片转换成二进制

 1.将Image图像文件存入到数据库中

我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.

View Code
        //将本地图片转换成二进制保存起来
        private byte[] SetImageToByteArray(string fileName)
        {
            FileStream fs = null;
            try
            {
                fs = new FileStream(fileName, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite);
                Bitmap bt = new Bitmap(fs);
                int streamLength = (int)fs.Length;
                byte[] image = new byte[streamLength];
                fs.Read(image, 0, streamLength);

                return image;
            }
            catch (Exception)
            {

                throw;

            }
            finally
            {

                fs.Close();
            }
        }

 

View Code
// 根据文件名(完全路径)
public  byte[] SetImageToByteArray( string fileName)
    {
        FileStream fs =  new FileStream(fileName, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite);
         int streamLength = ( int)fs.Length;
         byte[] image =  new  byte[streamLength];
        fs.Read(image,  0, streamLength);
        fs.Close();
         return image;
    }

// 另外,在ASP.NET中通过FileUpload控件得到的图像文件可以通过以下方法
public  byte[] SetImageToByteArray(FileUpload FileUpload1)
    {
        Stream stream = FileUpload1.PostedFile.InputStream;
         byte[] photo =  new  byte[FileUpload1.PostedFile.ContentLength];
        stream.Read(photo,  0, FileUpload1.PostedFile.ContentLength);
        stream.Close();
         return photo;
    }

2.从SQL Server数据库读取Image类型的数据,并转换成bytes[]或Image图像文件

View Code
// 将数据库中的Image类型转换成byte[]
         public  byte[] SetImage(SqlDataReader reader)
        {
             return ( byte[])reader[ " Image "]; // Image为数据库中存放Image类型字段
        }

// 将byte[]转换成Image图像类型
// 加载以下命名空间using System.Drawing;/using System.IO;
using System.Data.SqlClient;
    public Image SetByteToImage( byte[] mybyte)
   {
           Image image;
             MemoryStream mymemorystream =  new MemoryStream(mybyte, 0, mybyte.Length);
           image = Image.FromStream(mymemorystream);
            return image; 
    } 

这种方式保存图片比较安全

大致的步骤,就是我们首先要获得文件的路径,无论是通过上传控件和文本框,还是手动输入等,只要能获得路径就可以了

然后我们就可以利用上面的方法,将文件资源转换为二进制放到数据库里,数据库字段可以使用image类型,或者字符串,到时候转换下就可以了

最后我们就可以从数据库中读取字节,转换成image,或者以流的方式输出图片都可以了(这种一般用于asp.net输入图片)

asp.net输入流的代码如下:

View Code
     protected  void Page_Load( object sender, EventArgs e)
        {
             byte[] bb = SetImageToByteArray( " E:\\regedit.jpg ");
            System.Drawing.Image img = ReturnPhoto(bb);
             // 设定输出文件的类型
            Response.ContentType =  " image/jpg ";
             // 输出图片文件二进制数据
            Response.BinaryWrite(bb);
        }

如果是winForm就可以直接通过转换过的image赋值就可以了

 

View Code
           byte[] bb = SetImageToByteArray(textBox1.Text);
            System.Drawing.Image img = ReturnPhoto(bb);
            pictureBox1.Image = img;

 


 

目录
相关文章
|
20天前
|
数据采集 JavaScript C#
C#图像爬虫实战:从Walmart网站下载图片
C#图像爬虫实战:从Walmart网站下载图片
|
12月前
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
选中项目,点击右上角的显示全部文件按钮,会将默认隐藏的文件显示出来,选中所需图片,右键,添加到项目,然后选择图片查看属性,生成操作选择resource。完毕。本人目前的解决方案。
412 41
C#WPF 图片在显示时没有问题,但在运行时图片显示不出来的解决
|
5月前
|
存储 算法 C#
C# 生成指定图片的缩略图
C# 生成指定图片的缩略图
|
5月前
|
C# 开发工具 数据安全/隐私保护
C# 给图片添加文字水印
C# 给图片添加文字水印
|
5月前
|
开发框架 .NET C#
C# 自动填充文字内容到指定图片
C# 自动填充文字内容到指定图片
|
5月前
|
API C# 数据安全/隐私保护
C# 实现网页内容保存为图片并生成压缩包
C# 实现网页内容保存为图片并生成压缩包
|
10月前
|
API C#
C# 调用系统“API“设置图片为“桌面壁纸“
C# 调用系统“API“设置图片为“桌面壁纸“
|
12月前
|
C#
C# 图片RGB处理判断
C# 图片RGB处理判断 需要:根据一张原始图的RGB平均值和新的图片的RGB平均值的差距,来判断图中是否出现除原图中物体外的其他物体 前提:.Net framework 4.8 及以上 示例代码: 程序集:using System;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imagin...
46 0
|
人工智能 文字识别 API
C# 10分钟完成百度图片提取文字(文字识别)——入门篇
C# 10分钟完成百度图片提取文字(文字识别)——入门篇