图像处理业务逻辑CImageLibrary类(C/S框架网开源)
图像处理业务逻辑CImageLibrary类(C/S框架网开源)
图像处理业务逻辑CImageLibrary类 C# Code: /// <summary> /// 图片处理 /// </summary> public class CImageLibrary { /// <summary> /// 检查图片返回的结果 /// </summary> public enum ValidateImageResult { OK, InvalidFileSize, InvalidImageSize } /// <summary> /// 检查图片文件大小 /// </summary> /// <param name="file">图片文件</param> /// <param name="MAX_FILE_SIZE">最大文件大小</param> /// <param name="MAX_WIDTH">最大宽度</param> /// <param name="MAX_HEIGHT">最大高度</param> /// <returns>返回检查结果</returns> public static ValidateImageResult ValidateImage(string file, int MAX_FILE_SIZE, int MAX_WIDTH, int MAX_HEIGHT) { byte[] bs = File.ReadAllBytes(file); double size = (bs.Length / 1024); //大于50KB if (size > MAX_FILE_SIZE) return ValidateImageResult.InvalidFileSize; Image img = null; try { img = Image.FromFile(file); if (img.Width > MAX_WIDTH || img.Height > MAX_HEIGHT) return ValidateImageResult.InvalidImageSize; else return ValidateImageResult.OK; } finally { img.Dispose(); } } /// <summary> /// 按宽度比例缩小图片 /// </summary> /// <param name="imgSource">原始图片</param> /// <param name="MAX_WIDTH">最大宽度</param> /// <returns></returns> public static Image ResizeImage(Image imgSource, int MAX_WIDTH, int MAX_HEIGHT) { Image imgOutput = imgSource; Size size = new Size(0, 0); //用于存储按比例计算后的宽和高参数 if (imgSource.Width <= 3 || imgSource.Height <= 3) return imgSource; //3X3大小的图片不转换 //按宽度缩放图片 if (imgSource.Width > MAX_WIDTH) //计算宽度 { double rate = MAX_WIDTH / (double)imgSource.Width; //计算宽度比例因子 size.Width = Convert.ToInt32(imgSource.Width * rate); size.Height = Convert.ToInt32(imgSource.Height * rate); imgOutput = imgSource.GetThumbnailImage(size.Width, size.Height, null, IntPtr.Zero); } //按高度缩放图片 if (imgOutput.Height > MAX_HEIGHT)//计算高度 { double rate = MAX_HEIGHT / (double)imgOutput.Height; //计算宽度比例因子 size.Width = Convert.ToInt32(imgOutput.Width * rate); size.Height = Convert.ToInt32(imgOutput.Height * rate); imgOutput = imgSource.GetThumbnailImage(size.Width, size.Height, null, IntPtr.Zero); } return imgOutput; } /// <summary> /// 图片转换为数组 /// </summary> /// <param name="imageFileName">图片文件</param> /// <returns></returns> public static byte[] GetImageBytes(string imageFileName, ImageFormat format) { Image img = Image.FromFile(imageFileName); byte[] bs = GetImageBytes(img, format); img.Dispose(); return bs; } /// <summary> /// 图片转换为数组 /// </summary> /// <param name="img">图片实例</param> /// <returns></returns> public static byte[] GetImageBytes(Image img, ImageFormat format) { if (img == null) return null; MemoryStream ms = new MemoryStream(); try { Bitmap bmp = new Bitmap(img); bmp.Save(ms, format); byte[] bs = ms.ToArray(); ms.Close(); return bs; } catch { ms.Close(); return null; } } /// <summary> /// 数组转换为图片 /// </summary>. /// <param name="bs">数组</param> /// <returns></returns> public static Image FromBytes(byte[] bs) { if (bs == null) return null; MemoryStream ms = null; try { ms = new MemoryStream(bs); Image returnImage = Image.FromStream(ms); return returnImage; } catch { if (ms != null)ms.Close(); return null; } } /// <summary> /// 转换为BMP格式 /// </summary> /// <param name="source">原图</param> /// <returns>返回BMP格式的图片</returns> public static Image ToBMP(Image source, string outFileName) { try { source.Save(outFileName, ImageFormat.Bmp); } catch (Exception ex) { throw new Exception("原图文件流可能已关闭!\r\n" + ex.Message); } if (source.RawFormat == ImageFormat.Bmp) { return source as Bitmap; //BMP格式不需要转换 } return Image.FromFile(outFileName);//加载存储的BMP文件. } /// <summary> /// 转换为JPG格式 /// </summary> /// <param name="source">原图</param> /// <returns>返回JPG格式的图片</returns> public static Image ToJPG(Image source, string outFileName) { try { source.Save(outFileName, ImageFormat.Jpeg); } catch (Exception ex) { throw new Exception("原图文件流可能已关闭!\r\n" + ex.Message); } if (source.RawFormat == ImageFormat.Jpeg) { return source as Bitmap; //BMP格式不需要转换 } return Image.FromFile(outFileName);//加载存储的BMP文件. } /// <summary> /// 转换为PNG格式 /// </summary> /// <param name="source">原图</param> /// <returns>返回PNG格式的图片</returns> public static Image ToPNG(Image source, string outFileName) { try { source.Save(outFileName, ImageFormat.Png); } catch (Exception ex) { throw new Exception("原图文件流可能已关闭!\r\n" + ex.Message); } if (source.RawFormat == ImageFormat.Png) { return source as Bitmap; //BMP格式不需要转换 } return Image.FromFile(outFileName);//加载存储的BMP文件. } /// <summary> /// 获取1x1像素的空图片 /// </summary> /// <returns></returns> public static byte[] GetEmptyImageByte() { Bitmap bmp = new Bitmap(1, 1); return GetImageBytes(bmp, ImageFormat.Jpeg); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 扫一扫加作者微信
参考文档:
Asp.Net使用SmtpClient发送邮件(C/S框架网开源) 在C/S框架网下载Demo版要权限和注册吗? 关于扩展权限、扩展功能按钮及自定义功能点的命名|C/S框架网 通用图片处理类CImageLibrary,预设存储JPG格式|C/S框架网 C/S框架网专注ERP系统开发平台ERP系统开发框架研发 MES系统快速开发平台|MES开源框架|C/S框架网 开发技巧-Winform窗体自动生成下一个业务流程的单据|C/S框架网 VS表达式包含未定义的函数调用IsNullOrEmpty|C/S框架网 使用bllBaseDataDict类提交业务单据(主从表)的明细表实例|C/S框架网 CS开发框架之自增字段(Identity),时间戳(Timestamp)字段处理|C/S框架网 Winform界面开发框架之界面展示效果图|C/S框架网 Winform界面的功能按钮同等权限控制|C/S框架网 CSFramework企业版V4与旗舰版V5区别|C/S框架网 CSFramework代码生成器自动生成主从表界面-C/S框架网 C/S框架网提供原创开源.NET开发架构.NET管理系统框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |