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. Android拍照和从相册获取照片

    1.从相册获取照片 private void openAlumb() { //mRxPermissions:三方权限库 mRxPermissions .request(Manifest.permiss ...

  2. Innodb学习

    一.并发控制 为什么要进行并发控制? 因为并发的任务会对同一个临界资源进行操作,如果不进行并发控制,可能导致不一致,故必须进行并发控制. 如何进行并发控制? 1.锁. 2.数据多版本. 施工ing.. ...

  3. HTML主体标签

    HTML标签 在HTML结构代码中可以看到非常多的<>,这就是html的标签.整块html代码几乎就是由各种各样的标签与标签内容构成,每一个标签对应一个网页上的一个小模块,如一段文字1,一 ...

  4. Flask笔记(一)

    first_flask_project.py # 从flask这个包中导入Flask这个类 # Flask这个类是项目的核心,以后很多操作都是基于这个类的对象 # 注册url.注册蓝图等都是基于这个类 ...

  5. ubuntu---记录.重装电脑之设置电脑信息

    (1)设置网络(2)安装一个中文输入法(3)CUDA+驱动+cuDNN+添加到系统环境中(4)禁止内核更新(5)安装好opencv之后,查看安装的版本(6)查看自带的python版本(7)设置系统里p ...

  6. SLAM面试常见问题

    之前我们分享过视觉SLAM找工作.面试经历,见<2018年SLAM.三维视觉方向求职经验分享>,<经验分享 | SLAM.3D vision笔试面试问题>. 从零开始学习SLA ...

  7. Linux添加shell(.sh)脚本并添加定时任务

    一.添加sheel脚本 1.首先创建一个执行程序:vim a.sh 2.编辑: #!/bin/bash  python3  python.py >> test2.log 2>& ...

  8. php中危险的木马函数-eval()函数

    eval() 函数可将字符串转换为代码执行,并返回一个或多个值. 如果eval函数在执行时遇到错误,则抛出异常给调用者. 类似的函数是loadcode ,loadcode并不立即执行代码,而是返回一个 ...

  9. NoClassDefFoundError错误发生的原因

    今上午项目怎么也起不来,总报这个错,上网查一下,大概解释如下:NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误.例如 ...

  10. Linux(centos 7) 安装nginx

    在安装nginx之前需要安装依赖的包 一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc- ...