LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

几个C#图片操作公共库:加载、压缩、base64等

admin
2024年6月3日 11:19 本文热度 2061

这里包括图片加载、压缩、base64等,大家可以收藏一下,用起来方便。

代码如下:

public static class ImageFun
{
		#region 图片
		public static EncoderParameters GetEncoderParas(long picquality)
		{
				EncoderParameters eps = new EncoderParameters(1);
				Encoder ec = Encoder.Quality;
				EncoderParameter ep = new EncoderParameter(ec, picquality);
				eps.Param[0] = ep;
				return eps;
		}

		public static ImageCodecInfo GetJpegCodecInfo()
		{
				ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
				ImageCodecInfo jpegICIinfo = null;
				for (int x = 0; x < arrayICI.Length; x++)
				{
						if (arrayICI[x].FormatDescription.Equals("JPEG"))
						{
								jpegICIinfo = arrayICI[x];
								break;
						}
				}
				return jpegICIinfo;
		}

		public static System.Drawing.Image GetImage(string path)
		{
				FileStream fs = new FileStream(path, FileMode.Open);
				Image result = Image.FromStream(fs);
				fs.Close();
				return result;
		}

		public static Bitmap GetImageFromBase64(string base64string)
		{
				byte[] b = Convert.FromBase64String(base64string);
				MemoryStream ms = new MemoryStream(b);
				Bitmap bitmap = new Bitmap(ms);
				return bitmap;
		}

		public static string GetBase64FromImage(string imagefile)
		{
				string strbaser64 = "";
				try
				{
						Bitmap bmp = new Bitmap(imagefile);
						MemoryStream ms = new MemoryStream();
						bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
						byte[] arr = new byte[ms.Length];
						ms.Position = 0;
						ms.Read(arr, 0, (int)ms.Length);
						ms.Close();
						strbaser64 = Convert.ToBase64String(arr);
				}
				catch (Exception)
				{
						return "";
				}
				return strbaser64;
		}

		/// <summary>
		/// 按照比例缩小图片
		/// </summary>
		/// <param name="srcImage">要缩小的图片</param>
		/// <param name="percent">缩小比例</param>
		/// <returns>缩小后的结果</returns>
		public static Bitmap PercentImage(Image srcImage, double percent)
		{
				// 缩小后的高度
				int newH = int.Parse(Math.Round(srcImage.Height * percent).ToString());
				// 缩小后的宽度
				int newW = int.Parse(Math.Round(srcImage.Width * percent).ToString());
				try
				{
						// 要保存到的图片
						Bitmap b = new Bitmap(newW, newH);
						Graphics g = Graphics.FromImage(b);
						// 插值算法的质量
						g.InterpolationMode = InterpolationMode.Default;
						g.DrawImage(srcImage, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, srcImage.Width, srcImage.Height), GraphicsUnit.Pixel);
						g.Dispose();
						return b;
				}
				catch (Exception)
				{
						return null;
				}
		}

		/// <summary>
		/// 按照指定大小缩放图片
		/// </summary>
		/// <param name="srcImage"></param>
		/// <param name="iWidth"></param>
		/// <param name="iHeight"></param>
		/// <returns></returns>
		public static Bitmap SizeImage(Image srcImage, int iWidth, int iHeight)
		{
				try
				{
						// 要保存到的图片
						Bitmap b = new Bitmap(iWidth, iHeight);
						Graphics g = Graphics.FromImage(b);
						// 插值算法的质量
						g.InterpolationMode = InterpolationMode.HighQualityBicubic;
						g.DrawImage(srcImage, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(0, 0, srcImage.Width, srcImage.Height), GraphicsUnit.Pixel);
						g.Dispose();
						return b;
				}
				catch (Exception)
				{
						return null;
				}
		}

		/// <summary>
		/// jpeg图片压缩
		/// </summary>
		/// <param name="sFile"></param>
		/// <param name="outPath"></param>
		/// <param name="flag"></param>
		/// <returns></returns>
		public static bool GetPicThumbnail(string sFile, string outPath, int flag)
		{
				if (File.Exists(outPath)) File.Delete(outPath);

				System.Drawing.Image iSource = System.Drawing.Image.FromFile(sFile);
				ImageFormat tFormat = iSource.RawFormat;
				//以下代码为保存图片时,设置压缩质量
				EncoderParameters ep = new EncoderParameters();
				long[] qy = new long[1];
				qy[0] = flag;//设置压缩的比例1-100
				EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);
				ep.Param[0] = eParam;
				try
				{
						ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
						ImageCodecInfo jpegICIinfo = null;
						for (int x = 0; x < arrayICI.Length; x++)
						{
								if (arrayICI[x].FormatDescription.Equals("JPEG"))
								{
										jpegICIinfo = arrayICI[x];
										break;
								}
						}
						if (jpegICIinfo != null)
						{
								iSource.Save(outPath, jpegICIinfo, ep);//dFile是压缩后的新路径
						}
						else
						{
								iSource.Save(outPath, tFormat);
						}
						return true;
				}
				catch
				{
						return false;
				}
				finally
				{
						iSource.Dispose();
				}
		}
		#endregion
}

该文章在 2024/6/3 11:20:27 编辑过
关键字查询
相关文章
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved