C# 图片处理方法 整理汇总
/// <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# 图片处理方法 整理汇总的更多相关文章
- CSS图片垂直居中方法整理集合
原帖链接:http://bbs.blueidea.com/thread-2666987-1-1.html 1.因为Opera,FF3,IE8均支持display:talbe;这些特性了,因此改进的办法 ...
- Base64 字符串转图片 问题整理汇总
前言 最近碰到了一些base64字符串转图片的开发任务,开始觉得没啥难度,但随着开发的进展还是发现有些东西需要记录下. Base64 转二进制 这个在net有现有方法调用: Convert.FromB ...
- JavaScript实现判断图片是否加载完成的3种方法整理
JavaScript实现判断图片是否加载完成的3种方法整理 有时候我们在前端开发工作中为了获取图片的信息,需要在图片加载完成后才可以正确的获取到图片的大小尺寸,并且执行相应的回调函数使图片产生某种显示 ...
- MATLAB(4)——图片保存方法汇总及常用指令
作者:桂. 时间:2017-03-03 19:30:03 链接:http://www.cnblogs.com/xingshansi/p/6498318.html 前言 本文为MATLAB系列第四篇. ...
- HTML5 Audio/Video 标签,属性,方法,事件汇总
HTML5 Audio/Video 标签,属性,方法,事件汇总 (转) 2011-06-28 13:16:48 <audio> 标签属性:src:音乐的URLpreload:预加载au ...
- 【AS3】Flash与后台数据交换四种方法整理
随着Flash Player 9的普及,AS3编程也越来越多了,所以这次重新整理AS3下几种与后台数据交换方法.1.URLLoader(URLStream)2.FlashRemoting3.XMLSo ...
- [转帖]HTML5 Audio/Video 标签,属性,方法,事件汇总
HTML5 Audio/Video 标签,属性,方法,事件汇总 <audio>标签属性: src:音乐的URL preload:预加载 autoplay:自动播放 loop:循环播放 co ...
- android图片处理方法
Java代码 //压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ...
- 在Altium_Designer_PCB_中插入图片的方法
详细请看PDF: http://files.cnblogs.com/files/BinB-W/在Altium_Designer_PCB_中插入图片的方法.pdf 配套文件: http://files. ...
随机推荐
- Json的转换
package com.utils; import java.io.IOException; import java.util.List; import org.codehaus.jackson.Js ...
- ORA-00600: internal error code, arguments: [kcblin_3], [103], [253952], [8192], [32769], [312], [640], [], [], [], [], []解决方法
昨晚,一SQL执行的时候报了ORA-00600: internal error code, arguments: [kcblin_3], [103], [253952], [8192], [32769 ...
- opencv学习之路(27)、轮廓查找与绘制(六)——外接圆、椭圆拟合、逼近多边形曲线、计算轮廓面积及长度、提取不规则轮廓
一.最小外接圆 #include "opencv2/opencv.hpp" #include<iostream> using namespace std; using ...
- 如何退出vim
按ESC键 按ESC键 按ESC键 然后: 最下面出现一条能输入命令的地方 输入冒号 输入冒号 输入冒号 然后输入命令: :w 保存文件但不退出 :w file 将修改另外保存到 file 中,不退出 ...
- JS设计模式(10)职责链模式(重要)
什么是职责链模式? 重要性:4 星,在项目中能对 if-else 语句进行优化 定义:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到 ...
- Learning-Python【9】:Python文件操作
1.什么是文件 文件是操作系统提供给用户或应用程序的一种虚拟单位,该虚拟单位直接映射的是硬盘空间.通俗点说,文件就是存放数据的地方 2.为何要处理文件 用户或应用程序直接操作文件(读/写)就被操作系统 ...
- Lintcode469-Same Tree-Easy
469. Same Tree Check if two binary trees are identical. Identical means the two binary trees have th ...
- C/C++.【转】解析URL的转义字符百分比(%)字符串
1.来自:[HTTP]_[C_C++]_[解析URL的转义字符百分比字符串] - 猪一戒 - 博客园.html(http://www.cnblogs.com/zhuyijie/p/6465303.ht ...
- JS打开新窗口防止被浏览器阻止的方法
这篇文章主要介绍了JS打开新窗口防止被浏览器阻止的方法,分析对比了常用方法与改进方法,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了JS打开新窗口防止被浏览器阻止的方法.分享给大家供大家参考. ...
- C# Log4Net 日志
C#使用Log4Net记录日志 第一步:下载Log4Net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi ...