C# 图片处理方法 整理汇总

时间:2023-03-09 06:21:05
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;
}