字节数组byte[]与图片image之间的转化

字节数组转换成图片

public static Image byte2img(byte[] buffer)
{
    MemoryStream ms = new MemoryStream(buffer);
    ms.Position = 0;
    Image img = Image.FromStream(ms);
    ms.Close();
    return img;
}

图片转化为字节数组

public static byte[] byte2img(Bitmap Bit)
{
    byte[] back = null;
    MemoryStream ms = new MemoryStream();
    Bit.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    back = ms.GetBuffer();
    return back;
}

字节数组byte[]与字符串string之间的编码解码

字符串到字节数组的编码

public static byte[] str2byte(string str)
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes(param);
    //byte[] data = Convert.FromBase64String(param);
    //有很多种编码方式,可参考:http://blog.csdn.net/luanpeng825485697/article/details/77622243
    return data;
}

字节数组到字符串的解码

public static string str2byte(byte[] data)
{
    string str = System.Text.Encoding.UTF8.GetString(data);
    //str = Convert.ToBase64String(data);
    //有很多种编码方式,可参考:http://blog.csdn.net/luanpeng825485697/article/details/77622243
    return str;
}

字节数组byte[]与内存流MemoryStream之间的转换

字节数组转化为输入内存流

public static MemoryStream byte2stream(byte[] data)
{
    MemoryStream inputStream = new MemoryStream(data);
    return inputStream;
}

输出内存流转化为字节数组

public static byte[] byte2stream(MemoryStream outStream)
{
    return outStream.ToArray();
}

字节数组byte[]与流stream之间的转换

将 Stream 转成 byte[]

public byte[] stream2byte(Stream stream)
{
    byte[] bytes = new byte[stream.Length];
    stream.Read(bytes, 0, bytes.Length);
    // 设置当前流的位置为流的开始
    stream.Seek(0, SeekOrigin.Begin);
    return bytes;
}

将 byte[] 转成 Stream

public Stream byte2stream(byte[] bytes)
{
    Stream stream = new MemoryStream(bytes);
    return stream;
}

流Stream 和 文件file之间的转换

将 Stream 写入文件

public void stream2file(Stream stream,string fileName)
{
    // 把 Stream 转换成 byte[]
    byte[] bytes = new byte[stream.Length];
    stream.Read(bytes, 0, bytes.Length);
    // 设置当前流的位置为流的开始
    stream.Seek(0, SeekOrigin.Begin);
    // 把 byte[] 写入文件
    FileStream fs = new FileStream(fileName, FileMode.Create);
    BinaryWriter bw = new BinaryWriter(fs);
    bw.Write(bytes);
    bw.Close();
    fs.Close();
}

从文件读取 Stream

public Stream file2stream(string fileName)
{
    // 打开文件
    FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
    // 读取文件的 byte[]
    byte[] bytes = new byte[fileStream.Length];
    fileStream.Read(bytes, 0, bytes.Length);
    fileStream.Close();
    // 把 byte[] 转换成 Stream
    Stream stream = new MemoryStream(bytes);
    return stream;
}

c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换的更多相关文章

  1. C#中字节数组byte[]和字符串string类型的相互转换

    C#中字节数组byte[]和字符串string类型的相互转换: string转byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBy ...

  2. C#中字节数组(byte[])和字符串相互转换

    转换过程主要使用到System.Text.Encoding命名空间下的类 1. 字符串转换成字节数组byte[]: string str = "This is test string&quo ...

  3. java中字节数组byte[]和字符(字符串)之间的转换

    转自:http://blog.csdn.net/linlzk/article/details/6566124 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成by ...

  4. [.Net,C#]三类资源:流对象Stream,字节数组byte[],图片Image

    三类资源:流对象Stream,字节数组byte[],图片Image 关系:Stream<=>byte[],byte[]<=>Image Stream 与Image相互转化的媒介 ...

  5. Java基础知识强化之IO流笔记27:FileInputStream读取数据一次一个字节数组byte[ ]

    1. FileInputStream读取数据一次一个字节数组byte[ ]  使用FileInputStream一次读取一个字节数组: int read(byte[]  b) 返回值:返回值其实是实际 ...

  6. 字节数组byte[]和整型,浮点型数据的转换——Java代码

    近期在写C++ socket和java socket之间的通信程序,涉及到整数浮点数的传输.须要从字节数组还原数据,查了一些资料.总结例如以下 1.       整数和浮点数的机器表示 在机器内部.不 ...

  7. C#-----字节数组(byte[])和字符串相互转换

       Encoding类  表示字符编码 1.字符串转换成字节数组byte[] using System; using System.Collections.Generic; using System ...

  8. 【stanford C++】字符串(String)与流(Stream)

    字符串(String)与流(Stream) 一.C++中字符串(String) 字符串(String):就是(可能是空的)字符序列. C++中的字符串在概念上和Java中的字符串类似. C++字符串用 ...

  9. Android开发之常用必备工具类图片bitmap转成字符串string与String字符串转换为bitmap图片格式

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

随机推荐

  1. [转载]PS各个工具的字母快捷键和英文全名

    原文地址:PS各个工具的字母快捷键和英文全名作者:Tycho     选框-Marquee(M)     移动-move(V)     套索-Lasso(L)     魔棒-Wand(W) 喷枪-in ...

  2. 201521123014 《Java程序设计》第7周学习总结

    1. 本周学习总结 2. 书面作业 Q1 ArrayList代码分析 1.1 解释ArrayList的contains源代码 先看看contains的源代码: public boolean conta ...

  3. 201521123024 《Java程序设计》第2周学习总结

    1. 本周学习总结 1.Scanner扫描器的用法 2.各种数据类型的使用 3.运算符和表达式的使用 4.枚举类.String类的应用 5.了解用package和import管理类别 2.书面作业 1 ...

  4. 201521123090《Java程序设计》第1周学习总结

    1.学习总结 初步了解面对对象编程思想 使用eclipse关联git管理代码 简单了解java 2.书面作业 Q:为什么java程序可以跨平台运行?执行java程序的步骤是什么?(请用自己的语言书写) ...

  5. geyear和getfullyear的区别

    getYear(),IE中获得正确年份,但有的浏览器获取的是当前年份-1900的值.而IE是当大于2000时,直接加上1900 getFullYear(),都是可以获得正确年份. 所以建议使用getF ...

  6. pygame 精灵的行走及二段跳实现方法

    不得不承认<Python游戏编程入门>这本书翻译.排版非常之烂,但是里面的demo还是很好的,之前做了些改编放到这里. 先是素材: 背景 精灵 所有素材均取自此书 接下来就是精灵类的创建了 ...

  7. Javascript-正则表达式-开发中的使用.

    -- "(-1~99)之间 -1表示无限次!" pattern="^((-1)|([0-9]{0,2}))$" -- "(0~99.99)之间 的金额 ...

  8. weblogic服务器上类或者方法找不到的解决办法

    下面以eclipse-birt(报表)为例,介绍这种问题出现的原因以及解决之道: 分析比较好的见:http://developer.actuate.com/community/forum/index. ...

  9. 快速学会require的使用

    快速学会使用require.js 1.get start 先到官网下载requirejs到本地,官方同时提供Node版本r.js,我们只使用requirejs即可. 接下来在页面上写入 <scr ...

  10. win7系统Myeclipse下切换SVN用户

     Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能.但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号.密码保存之后 ...