/// <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 = 0; ms.Read(arr, 0, (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(0, SeekOrigin.Begin); ms.Read(buffer, 0, 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, 0, 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; }