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

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

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

        //将本地图片转换成二进制保存起来
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, , streamLength); return image;
}
catch (Exception)
{ throw; }
finally
{ fs.Close();
}
}
//根据文件名(完全路径)
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, , 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, , FileUpload1.PostedFile.ContentLength);
        stream.Close();
        return photo;
    }

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

//将数据库中的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,, mybyte.Length);
           image = Image.FromStream(mymemorystream);
           return image; 
    } 

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

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

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

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

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

    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赋值就可以了

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

C#将image中的显示的图片转换成二进制的更多相关文章

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

    本文转自:http://www.cnblogs.com/shuang121/archive/2012/07/09/2582654.html .将Image图像文件存入到数据库中 我们知道数据库里的Im ...

  2. java中如何把图片转换成二进制流的代码

    在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...

  3. C#图片转换成二进制流并且保存到sql server数据库

    注意:我要存储文件二进制流的列的类型是text,不是image类型. 我已经实现了从数据库中读取text类型的二进制流,,现在就是不知道怎么存进去. 我的部分关键代码: StreamReader sr ...

  4. java将图片转换成二进制

    package com.oumyye.图片; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; imp ...

  5. Unity3D:Text在Inspector面板中中无法显示,需转换成UTF-8格式

    环境:Win10 读取text内容后unity报错:Input string was not in the correct format 同时在Inspector面板中无法预览Text文本内容 随后发 ...

  6. 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)

    在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...

  7. 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果

    去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...

  8. [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...

  9. 使用CSS将图片转换成黑白(灰色、置灰)z转

    小tip: 使用CSS将图片转换成黑白(灰色.置灰) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.c ...

随机推荐

  1. Mysql insert声明优化

    1) 假设你同一时候从同一客户插入非常多行,使用多个值表的INSERT语句. 这比使用分开INSERT语句快(在一些情况中几倍).    Insert into test values(1,2),(1 ...

  2. 重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom

    原文:重新想象 Windows 8 Store Apps (10) - 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom [源码下载] ...

  3. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  4. Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用具体解释

     群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,样例中的功能极其强大,支持非常多控件.本篇博客具体给大家介绍下ListView和GridVi ...

  5. java单元测试(Junit)

    JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework),供Java开发人员编写单元测试之用. 对不同性质的被 ...

  6. redirect的错误用法asp.net怎么使用自定义错误

    工作了几年,写过程序也运营过网站,自定义错误也很熟悉了,最近再做项目发现有同事写了这样的代码 if (action != null) { id = Request.QueryString[" ...

  7. 返璞归真 asp.net mvc (4) - View/ViewEngine

    原文:返璞归真 asp.net mvc (4) - View/ViewEngine [索引页] [源码下载] 返璞归真 asp.net mvc (4) - View/ViewEngine 作者:web ...

  8. 皮尔逊相似度计算的例子(R语言)

    编译最近的协同过滤算法皮尔逊相似度计算.下顺便研究R简单使用的语言.概率统计知识. 一.概率论和统计学概念复习 1)期望值(Expected Value) 由于这里每一个数都是等概率的.所以就当做是数 ...

  9. 探索WebKit核心(一)------ 新秀开始

    为什么WebKit 现在,研究人员WebKit越来越多的人,我不能逃脱,其中还增加.WebKit也多亏了流行的浏览器和WebOS乱斗.随着Palm WebOS, Chrome OS, Firefox ...

  10. Android之Handler的postDelayed()使用方法

    这是一种创建多线程信息功能 用法: 1,首先创建一个Handler物 Handler handler=new Handler(); 2.然后创建一个Runnable物 Runnable runnabl ...