using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebUI.ServiceReferenceUser;
using System.Text; namespace WebUI.Controllers
{
public class DefaultController : Controller
{
// GET: Default
public ActionResult Index()
{
return View();
} #region 文件转二进制流(字节数组)
/// <summary>
/// 文件转二进制流(字节数组)
/// </summary>
/// <param name="strpath"></param>
/// <returns></returns>
public byte[] returnbyte(string strpath)
{
  // 以二进制方式读文件
    FileStream fsMyfile = new FileStream(strpath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
// 创建一个二进制数据流读入器,和打开的文件关联
    BinaryReader brMyfile = new BinaryReader(fsMyfile);
// 把文件指针重新定位到文件的开始
    brMyfile.BaseStream.Seek(, SeekOrigin.Begin);
   byte[] bytes = brMyfile.ReadBytes(Convert.ToInt32(fsMyfile.Length.ToString()));
// 关闭以上new的各个对象
    brMyfile.Close();
   return bytes;
}
#endregion #region 图片转二进制流(字节数组)
/// <summary>
/// 图片转二进制流(字节数组)
/// </summary>
/// <param name="Imagefilename"></param>
/// <returns></returns>
private byte[] ImgToByte(string Imagefilename)
{
Bitmap bmp = new Bitmap(Imagefilename);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = ;
ms.Read(arr, , (int)ms.Length);
ms.Close();
return arr;
}
#endregion #region 二进制流转图片
/// <summary>
/// 二进制流转图片
/// </summary>
/// <param name="arr"></param>
/// <param name="FileName"></param>
private void ByteToImg(byte[] arr, string FileName)
{
MemoryStream ms = new MemoryStream(arr);
Bitmap bmp = new Bitmap(ms);
bmp.Save(FileName);
}
#endregion #region 图片转Base64字符串
/// <summary>
/// 图片转Base64字符串
/// </summary>
/// <param name="Imagefilename"></param>
/// <returns></returns>
private string ImgToBase64String(string Imagefilename)
{
Bitmap bmp = new Bitmap(Imagefilename);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = ;
ms.Read(arr, , (int)ms.Length);
ms.Close();
String strbaser64 = Convert.ToBase64String(arr);
return strbaser64;
}
#endregion #region Base64字符串转图片
/// <summary>
/// Base64字符串转图片
/// </summary>
/// <param name="Base64Str"></param>
/// <param name="FileName"></param>
private void Base64StringToImg(string Base64Str, string FileName)
{
MemoryStream ms = new MemoryStream(Convert.FromBase64String(Base64Str));
Bitmap bmp = new Bitmap(ms);
bmp.Save(FileName);
}
#endregion #region Base64和字节数组互转
/// <summary>
/// Base64转字节数组
/// </summary>
/// <param name="Base64Str"></param>
/// <returns></returns>
private byte[] Base64StringToByte(string Base64Str)
{
return Convert.FromBase64String(Base64Str);
} /// <summary>
/// 字节数组转Base64
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
private string ByteToBase64String(byte[] arr)
{
return Convert.ToBase64String(arr);
}
#endregion #region 字节流与二进制互转
/// <summary>
/// 字节流与二进制互转
/// </summary>
public void ByteToBit()
{
var bytearr = ImgToByte(Server.MapPath("/images/teacher.jpg"));
StringBuilder str = new StringBuilder(); foreach (var p in bytearr)
{
str.AppendFormat("{0},", Convert.ToString(p, ));
} var imgstr = str.ToString().Trim(','); FileHelper.WriteText(Server.MapPath("/bit.txt"), imgstr); var arr = FileHelper.FileToString(Server.MapPath("/bit.txt")).Split(',');
var imgarr = Array.ConvertAll<string, byte>(arr, m => Convert.ToByte(m, ));
}
#endregion /// <summary>
/// 测试输出图片
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public ActionResult Pic(string fileName)
{
return File(Base64StringToByte(FileHelper.FileToString(fileName)), @"image/jpeg");
}
}
}

字节组数(二进制流)、Base64、图片(文件)、二进制相互之间转换的更多相关文章

  1. 如何显示二进制流的图片(利用img控件)

    之前在http://www.cnblogs.com/JsonZhangAA/p/5568575.html博文中是利用的image控件来显示的二进制流图片,我现在想的是能 通过普通的<img id ...

  2. 关于Python获取图片文件二进制数据的问题(获取为空)

    在搭建fastdfs文件系统的时候遇到了点问题,在测试上传文件数据流的时候,需要Python来获取本地文件的二进制流 from fdfs_client.client import Fdfs_clien ...

  3. c# 读数据库二进制流到图片

    public Bitmap PictureShow(string connectionString, string opName, string productType)        {       ...

  4. 编写base64图片文件

    base64编码代替css背景图片在网站上应用是很广泛的,例如:loading gif图片,天猫加载时那只猫等等. 因为base64图片可以减少http请求,所以我们经常会把不经常改动的,独立的,尺寸 ...

  5. php Base64编码文件二进制流主要使用

    <?php header( "Content-type: image/jpeg"); //$filename='1.jpg'; //$content=file_get_con ...

  6. BLOB存储图片文件二进制数据是非对错

    子在一天一天虚度,生活也在一天一天中茫然 做人做事哪能尽如人意,付出多少收获多少虽然存在偏颇,但是不劳而获的心态是万万不对的,更不能去怨天尤人,低调为人.做好自己就可以了 改进你的系统的最好的方法是先 ...

  7. ajax二进制流乱码图片解决方法

    仅供自己参考 参考博客 在请求成功的地方 添加以下代码: var blob=new Blob(); blob=this.response; 既然二进制数据拿到了,那么要把它放在一个 html标签中,并 ...

  8. C#MVC使用二进制流显示图片

    关于显示图片的最好方法当然是img 的src直接指向地址,简单实用.但是有时候也会使用到使用图片流显示图片的方法.实现也比较简单(在C# mvc中,java的不了解).具体如下: 1.前台cshtml ...

  9. GDI+ Image 读取内存二进制流显示图片

    int iBmpSize = cd.nTotleLen; HGLOBAL hMemBmp = GlobalAlloc(GMEM_FIXED, iBmpSize); IStream* pStmBmp = ...

  10. DBImg: 图片文件-二进制文件的转换

    using System; using System.IO; using System.Drawing; //using System.Collections.Generic; //using Sys ...

随机推荐

  1. 【Java】接口和抽象类总结

    一.接口 1.1 成员变量(其实是常量) 1.2 方法 二.抽象类 2.1 成员变量 2.2 方法 一.接口 1.1 成员变量(其实是常量) 成员变量默认用 public static final修饰 ...

  2. 【DRF框架】序列化组件——ModelSerializer

    ModelSerializer 1.ModelSerializer类似于ModelForm 2.根据模型自动生成一组字段 3.自带实现了.update()以及.create()方法 ModelSeri ...

  3. nginx的应用【静态代理、动静分离】

    Nginx主要应用: 静态web服务器 负载均衡 静态代理虚拟主机 静态代理 :把所有静态资源的访问改为访问nginx,而不是访问tomcat,因为nginx更擅长于静态资源的处理,性能更好,效率更高 ...

  4. 基于Java+Selenium的WebUI自动化测试框架(五)------页面操作实现类

    在编写完Log类和监听类之后,终于要回到正轨上来了.我们继续开始写UIExcutor的实现类. PS:如果你想让你的报告更加美观一些.推荐使用reportNG这个jar包. 在项目中导入reportn ...

  5. 【二叉搜索树】PAT-天梯赛- L2-004. 这是二叉搜索树吗?

    大致题意: 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,    其左子树中所有结点的键值小于该结点的键值:    其右子树中所有结点的键值大于等于该结点的键值:    其左右子树 ...

  6. sql index改怎么建

    https://stackoverflow.com/questions/11299217/how-can-i-optimize-this-sql-query-using-indexes ------- ...

  7. javascript常用工具类util.js

    //如果大家想要补充,请留言 /** * 判断指定名称的复选框是否被选中 * * @param {} * chname复选框名称 */ function chkCheckCha(chname) { v ...

  8. 怎么区分PV、IV、UV

    一:PV访问量(Page View),即页面访问量,每打开一次页面PV计数+1,刷新页面也是. 二:IP访问数指独立IP访问数,计算是以一个独立的IP在一个计算时段内访问网站计算为1次IP访问数.在同 ...

  9. Python3入门与进阶【笔记】

    1.二.八.十六进制转十进制:int('10', base=2).int('10', base=8).int('10', base=16): 2.八.十.十六进制转二进制:bin(0o+xxx).bi ...

  10. vuex的使用介绍

    1.vuex是什么? vuex是一个专为vue.js应用程序开发的状态管理模式(它采用集中式存贮管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化). 2.vuex的核心概念? ...