/// <summary>
/// 图片转为base64编码字符
/// </summary>
/// <param name="path">图片路径</param>
/// <param name="format">图片格式</param>
/// <returns>base64编码字符</returns>
public static string ImgToBase64(string path, ImageFormat format)
{
try
{
var bmp = new Bitmap(path);
var ms = new MemoryStream();
bmp.Save(ms, format);
var arr = new byte[ms.Length];
ms.Position = ;
ms.Read(arr, , (int)ms.Length);
ms.Close();
return Convert.ToBase64String(arr);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 图片转为base64编码字符
/// </summary>
/// <param name="bytes">图片二进制数据</param>
public static string ImgToBase64(byte[] bytes)
{
if (bytes == null)
{
return "";
} try
{
return Convert.ToBase64String(bytes);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 图片转为base64编码字符
/// </summary>
/// <param name="img">Image图片</param>
/// <returns>base64字符串</returns>
public static string ImgToBase64(Image img)
{
try
{
var bts = BitmapToBytes(img);
return ImgToBase64(bts);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// image转byte[]
/// </summary>
/// <param name="image">image</param>
/// <returns>byte[]</returns>
public static byte[] ImageToBytes(Image image)
{
var format = image.RawFormat;
using (var ms = new MemoryStream())
{
if (format.Equals(ImageFormat.Jpeg))
{
image.Save(ms, ImageFormat.Jpeg);
}
else if (format.Equals(ImageFormat.Png))
{
image.Save(ms, ImageFormat.Png);
}
else if (format.Equals(ImageFormat.Bmp))
{
image.Save(ms, ImageFormat.Bmp);
}
else if (format.Equals(ImageFormat.Gif))
{
image.Save(ms, ImageFormat.Gif);
}
else if (format.Equals(ImageFormat.Icon))
{
image.Save(ms, ImageFormat.Icon);
}
else
{
image.Save(ms, ImageFormat.Jpeg);
}
var buffer = new byte[ms.Length];
//Image.Save()会改变MemoryStream的Position,需要重新Seek到Begin
ms.Seek(, SeekOrigin.Begin);
ms.Read(buffer, , buffer.Length);
return buffer;
}
} /// <summary>
/// base64编码的文本转为图片
/// </summary>
/// <param name="bstring">base64编码图片</param>
/// <returns>图片</returns>
public static Bitmap Base64ToImage(string bstring)
{
try
{
if (string.IsNullOrEmpty(bstring)) return null;
var arr = Convert.FromBase64String(bstring);
var ms = new MemoryStream(arr);
var bmp = new Bitmap(Image.FromStream(ms));
ms.Close();
return bmp;
}
catch (Exception ex)
{
return null;
}
} /// <summary>
/// 图片转byte[]
/// </summary>
/// <param name="image"></param>
/// <returns></returns>
public static byte[] BitmapToBytes(Image image)
{ MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] bytes = ms.GetBuffer(); //byte[] bytes= ms.ToArray(); 这两句都可以,至于区别么,下面有解释
ms.Close();
return bytes;
} /// <summary>
///读取byte[]并转化为图片
/// </summary>
/// <param name="bytes">byte[]</param>
/// <returns>Image</returns>
public static Image GetImageByBytes(byte[] bytes)
{
Image photo = null;
using (var ms = new MemoryStream(bytes))
{
ms.Write(bytes, , bytes.Length);
photo = Image.FromStream(ms, true);
}
return photo;
}
        /// 图片url链接转化为图片
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static Bitmap GetURLImage(string url)
{
if (string.IsNullOrEmpty(url))
{
return null;
} try
{
System.Net.WebRequest webreq = System.Net.WebRequest.Create(url);
System.Net.WebResponse webres = webreq.GetResponse();
using (System.IO.Stream stream = webres.GetResponseStream())
{
Bitmap tmpImg = new Bitmap(stream);
var img = new Bitmap(tmpImg);
stream.Close();
return img;
}
}
catch (Exception ex)
{
//LogHelper.WriteErrorLog(typeof(ImageHelper), ex);
return null;
} }
/// <summary>
/// 图片url链接转化为字节
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static byte[] GetURLImageBytes(string url)
{
byte[] img = null;
try
{
System.Net.WebRequest webreq = System.Net.WebRequest.Create(url);
System.Net.WebResponse webres = webreq.GetResponse();
using (System.IO.Stream stream = webres.GetResponseStream())
{
using (System.IO.MemoryStream mStream = new MemoryStream())
{
stream.CopyTo(mStream);
img = mStream.GetBuffer();
stream.Close();
mStream.Close();
}
}
}
catch (Exception ex)
{
//LogHelper.WriteErrorLog(typeof(ImageHelper), ex);
}
return img;
}

C# 图片处理方法 整理汇总的更多相关文章

  1. CSS图片垂直居中方法整理集合

    原帖链接:http://bbs.blueidea.com/thread-2666987-1-1.html 1.因为Opera,FF3,IE8均支持display:talbe;这些特性了,因此改进的办法 ...

  2. Base64 字符串转图片 问题整理汇总

    前言 最近碰到了一些base64字符串转图片的开发任务,开始觉得没啥难度,但随着开发的进展还是发现有些东西需要记录下. Base64 转二进制 这个在net有现有方法调用: Convert.FromB ...

  3. JavaScript实现判断图片是否加载完成的3种方法整理

    JavaScript实现判断图片是否加载完成的3种方法整理 有时候我们在前端开发工作中为了获取图片的信息,需要在图片加载完成后才可以正确的获取到图片的大小尺寸,并且执行相应的回调函数使图片产生某种显示 ...

  4. MATLAB(4)——图片保存方法汇总及常用指令

    作者:桂. 时间:2017-03-03  19:30:03 链接:http://www.cnblogs.com/xingshansi/p/6498318.html 前言 本文为MATLAB系列第四篇. ...

  5. HTML5 Audio/Video 标签,属性,方法,事件汇总

    HTML5 Audio/Video 标签,属性,方法,事件汇总 (转) 2011-06-28 13:16:48   <audio> 标签属性:src:音乐的URLpreload:预加载au ...

  6. 【AS3】Flash与后台数据交换四种方法整理

    随着Flash Player 9的普及,AS3编程也越来越多了,所以这次重新整理AS3下几种与后台数据交换方法.1.URLLoader(URLStream)2.FlashRemoting3.XMLSo ...

  7. [转帖]HTML5 Audio/Video 标签,属性,方法,事件汇总

    HTML5 Audio/Video 标签,属性,方法,事件汇总 <audio>标签属性: src:音乐的URL preload:预加载 autoplay:自动播放 loop:循环播放 co ...

  8. android图片处理方法

    Java代码 //压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ...

  9. 在Altium_Designer_PCB_中插入图片的方法

    详细请看PDF: http://files.cnblogs.com/files/BinB-W/在Altium_Designer_PCB_中插入图片的方法.pdf 配套文件: http://files. ...

随机推荐

  1. autotools源文件相同/不同目录下

    关于Autotools 我们前面的章节中已经讲到了Makefile的使用(点击进入查看文章).我们知道在Linux下面如果编译一个比较大型的项目,我们可以通过Makefile的方式来完成. 但是,我们 ...

  2. P3195 [HNOI2008]玩具装箱TOY(斜率优化dp)

    P3195 [HNOI2008]玩具装箱TOY 设前缀和为$s[i]$ 那么显然可以得出方程 $f[i]=f[j]+(s[i]-s[j]+i-j-L-1)^{2}$ 换下顺序 $f[i]=f[j]+( ...

  3. 复旦高等代数 II(17级)每周一题

    本学期将继续进行高等代数每周一题的活动.计划从第一教学周开始,到第十六教学周为止(根据法定节假日安排,中间个别周会适当地停止),每周的周末将公布1道思考题(共16道),供大家思考和解答.每周一题通过“ ...

  4. Win32汇编学习(5):绘制文本2

    这次我们将学习有关文本的诸多属性如字体和颜色等. 理论: Windows 的颜色系统是用RGB值来表示的,R 代表红色,G 代表绿色,B 代表蓝色.如果您想指定一种颜色就必须给该颜色赋相关的 RGB ...

  5. CSS: hover选择器的使用

    用法1:这个表示的是:当鼠标悬浮在a这个样式上的时候,a的背景颜色设置为黄色 a:hover        {             background-color:yellow;        ...

  6. IdentityServer4授权类型(GrantType)对应的返回类型(ResponseType)

    授权类型(GrantyType) 返回类型(ResponseType) authorization_code code implicit token implicit id_token implici ...

  7. OC的反射机制

    反射机制主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法.对于人一个对象,都能够调用这个对象的任意方法和属性.这种 ...

  8. js获取css样式封装

    封装 function getStyle(obj , attr){ return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(ob ...

  9. javascript五种基本类型

    typeof 功能:检测变量的类型 语法:console.log(typeof  变量) 或  console.log(typeof (变量)): 五大基本类型 1.underfined 声明变量但是 ...

  10. 基于Xshell使用密钥方式连接远程主机

    基于Xshell使用密钥方式连接远程主机 连接远程主机,就验证身份而言,一般有两种方式,一种是通过用户密码:另一种通过公钥的方式(Public Key). 图1 xshell支持验证登录用户的方式 下 ...