字节组数(二进制流)、Base64、图片(文件)、二进制相互之间转换
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、图片(文件)、二进制相互之间转换的更多相关文章
- 如何显示二进制流的图片(利用img控件)
之前在http://www.cnblogs.com/JsonZhangAA/p/5568575.html博文中是利用的image控件来显示的二进制流图片,我现在想的是能 通过普通的<img id ...
- 关于Python获取图片文件二进制数据的问题(获取为空)
在搭建fastdfs文件系统的时候遇到了点问题,在测试上传文件数据流的时候,需要Python来获取本地文件的二进制流 from fdfs_client.client import Fdfs_clien ...
- c# 读数据库二进制流到图片
public Bitmap PictureShow(string connectionString, string opName, string productType) { ...
- 编写base64图片文件
base64编码代替css背景图片在网站上应用是很广泛的,例如:loading gif图片,天猫加载时那只猫等等. 因为base64图片可以减少http请求,所以我们经常会把不经常改动的,独立的,尺寸 ...
- php Base64编码文件二进制流主要使用
<?php header( "Content-type: image/jpeg"); //$filename='1.jpg'; //$content=file_get_con ...
- BLOB存储图片文件二进制数据是非对错
子在一天一天虚度,生活也在一天一天中茫然 做人做事哪能尽如人意,付出多少收获多少虽然存在偏颇,但是不劳而获的心态是万万不对的,更不能去怨天尤人,低调为人.做好自己就可以了 改进你的系统的最好的方法是先 ...
- ajax二进制流乱码图片解决方法
仅供自己参考 参考博客 在请求成功的地方 添加以下代码: var blob=new Blob(); blob=this.response; 既然二进制数据拿到了,那么要把它放在一个 html标签中,并 ...
- C#MVC使用二进制流显示图片
关于显示图片的最好方法当然是img 的src直接指向地址,简单实用.但是有时候也会使用到使用图片流显示图片的方法.实现也比较简单(在C# mvc中,java的不了解).具体如下: 1.前台cshtml ...
- GDI+ Image 读取内存二进制流显示图片
int iBmpSize = cd.nTotleLen; HGLOBAL hMemBmp = GlobalAlloc(GMEM_FIXED, iBmpSize); IStream* pStmBmp = ...
- DBImg: 图片文件-二进制文件的转换
using System; using System.IO; using System.Drawing; //using System.Collections.Generic; //using Sys ...
随机推荐
- 修改ssh的22端口
将ssh22端口修改为12345 https://www.cnblogs.com/chen-lhx/p/3974605.html # iptables开放12345端口iptables -I INPU ...
- 分布式Hadoop和HBase整合
环境: CentOS 6.6 hadoop-2.6.0 hbase-0.98.10.1 HBase1 192.168.1.4 Mast ...
- const变量可以修改么?
遇到了一个关于const修饰的变量值是否能修改问题,虽然我知道const变量在某些情况下可以通过指向它的指针来间接修改,但是对原理还是很模糊,今天就整理了一下. 一.三个试验压压惊 1.直接对cons ...
- Go语言实现简单的TCP、UDP链接
⼀.使用Golang创建⼀一个TCP连接 1.服务端处理理流程 a.监听端口 b.接受客户端的链接 c.创建Goroutine,处理这个链接(⼀个服务端要链接多个客户端,所以使用Gorouti ...
- maven 打包到本地库
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.2.0 -Dpackaging= ...
- 【Java】Eclipse+环境安装及新建Project
安装Eclipse 1.进入ecilpse官方下载地址:https://www.eclipse.org/downloads/?FEATURED_STORY 2.点击红色箭头指向的Download Pa ...
- h5触摸事件-判断上下滑动
// 判断上下滑动 var startX = 0, startY = 0; function touchStart(evt){ try{ var touch = evt.touches[0], //获 ...
- java疑问
1. new String("abc")究竟创建几个对象? 答: 一个或两个, 如果常量池中原来有"abc", 那么只创建一个对象; 如果常量池中原来没有&qu ...
- xld特征
halcon中什么是xld? xld(eXtended Line Descriptions) 扩展的线性描述,它不是基于像素的,人们称它是亚像素,只不过比像素更精确罢了,可以精确到像素内部的一种描述. ...
- Codeforces Round #413 (Div1 + Div. 2) C. Fountains(树状数组维护最大值)
题目链接:https://codeforces.com/problemset/problem/799/C 题意:有 c 块硬币和 d 块钻石,每种喷泉消耗硬币或钻石中的一种,每个喷泉有一个美丽值,问建 ...