图片转换成Base64编码
/// <summary>
/// 图片转Base64
/// </summary>
/// <param name="ImageFileName">图片的完整路径</param>
/// <returns>返回base64码</returns>
public static string ImgToBase64(string ImageFileName)
{
byte[] arr = { };
try
{
Bitmap bmp = new Bitmap(ImageFileName);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
}
catch (Exception ex)
{
}
return Convert.ToBase64String(arr);
}
Base64编码转换成图片
/// <summary>
/// 解析base-64转换图片
/// </summary>
/// <param name="imgs">base64码</param>
/// <returns>返回图片路径</returns>
public static string SavePhoto(string imgs)
{
string dummyData = imgs.Trim().Replace("%", "").Replace(",", "").Replace(" ", "+").Replace(" +", "%2B");
if (dummyData.Length % 4 > 0)
{
dummyData = dummyData.PadRight(dummyData.Length + 4 - dummyData.Length % 4, '=');
}
byte[] arr2 = Convert.FromBase64String(dummyData);
using (MemoryStream ms2 = new MemoryStream(arr2))
{
System.Drawing.Bitmap bmp2 = new System.Drawing.Bitmap(ms2);
只有把当前的图像复制一份,然后把旧的Dispose掉,那个文件就不被锁住了,
这样就可以放心覆盖原始文件,否则GDI+一般性错误(A generic error occurred in GDI+)
//System.Drawing.Bitmap bmpNew = new System.Drawing.Bitmap(bmp2);
//bmp2.Dispose();
//bmp2 = null;
var date = DateTime.Now.ToString("yyyy-MM-dd");
string[] str = date.Split('-');
DirectoryInfo dinfo4 = new DirectoryInfo("D:\\图片缓存\\" + str[0] + "\\" + str[1] + "\\" + str[2]);
if (!dinfo4.Exists)
{
Directory.CreateDirectory("D:\\图片缓存\\" + str[0] + "\\" + str[1] + "\\" + str[2]);
}
string filename = date + "-" + DateTime.Now.TimeOfDay.ToString("hhmmss");
string path = "D:\\图片缓存\\" + str[0] + "\\" + str[1] + "\\" + str[2] + "\\";
bmp2.Save(string.Format(path + filename + ".jpg", date), System.Drawing.Imaging.ImageFormat.Jpeg);
//bmp2.Save(filePath + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
//bmp2.Save(filePath + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
//bmp2.Save(filePath + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
//bmp2.Save(filePath + ".png", System.Drawing.Imaging.ImageFormat.Png);
bmp2.Dispose();
return path + filename + ".jpg";
}
}