-
C#教程之C# jpg缩略图函数代码
/// <summary>/// 生成jpg缩略图字节,本人的小软件中需要用到的功能,所以自己做了一个函数,和大家分享/// 为什么要生成字节而不是文件,这是为了方便后续处理啦^_^/// </summary>/// <param name="originalImagePath">原始路径</param>/// <param name="quality">质量0-100</param>/// <param name="width">宽度</param>/// <param name="height">高度</param>/// <param name="mode">模式:HW,W,H,Cut</param>/// <returns></returns>public static byte[] MakeJPGThumbnailBytes(string originalImagePath, long quality, int width, int height, string mode){Image originalImage = Image.FromFile(originalImagePath);MemoryStream s = new MemoryStream();int towidth = width;int toheight = height;int x = 0;int y = 0;int ow = originalImage.Width;int oh = originalImage.Height;switch (mode){case "HW"://指定高宽缩放(可能变形)break;case "W"://指定宽,高按比例toheight = originalImage.Height * width / originalImage.Width;break;case "H"://指定高,宽按比例towidth = originalImage.Width * height / originalImage.Height;break;case "Cut"://指定高宽裁减(不变形)if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight){oh = originalImage.Height;ow = originalImage.Height * towidth / toheight;y = 0;x = (originalImage.Width - ow) / 2;}else{ow = originalImage.Width;oh = originalImage.Width * height / towidth;x = 0;y = (originalImage.Height - oh) / 2;}break;default:break;}//新建一个bmp图片Image bitmap = new System.Drawing.Bitmap(towidth, toheight);//新建一个画板Graphics g = System.Drawing.Graphics.FromImage(bitmap);//设置高质量插值法g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量,低速度呈现平滑程度g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//清空画布并以透明背景色填充g.Clear(Color.Transparent);//在指定位置并且按指定大小绘制原图片的指定部分g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),new Rectangle(x, y, ow, oh),GraphicsUnit.Pixel);try{//以jpg格式保存缩略图EncoderParameters eps = new EncoderParameters(1);EncoderParameter ep = new EncoderParameter(Encoder.Quality,quality);eps.Param[0] = ep;bitmap.Save(s, GetCodecInfo("image/jpeg"), eps);return s.GetBuffer();}catch (System.Exception e){throw e;}finally{originalImage.Dispose();bitmap.Dispose();s.Dispose();g.Dispose();}}/**//// <summary>/// 保存JPG时用/// </summary>/// <param name="mimeType"></param>/// <returns>得到指定mimeType的ImageCodecInfo</returns>private static ImageCodecInfo GetCodecInfo(string mimeType){ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();foreach (ImageCodecInfo ici in CodecInfo){if (ici.MimeType == mimeType) return ici;}return null;}
栏目列表
最新更新
C#基于接口设计三层架构Unity篇
C#线程 入门
C#读取静态类常量属性和值
C# 插件式编程
C# 委托与事件有啥区别?
C#队列学习笔记:队列(Queue)和堆栈(Stack
linq 多表分组左连接查询查询统计
C#队列学习笔记:MSMQ入门一
C# 基础知识系列- 1 数据类型
二、C#入门—基础语法
C# 在Word中添加Latex 数学公式和符号
inncheck命令 – 检查语法
基于UDP的服务器端和客户端
再谈UDP和TCP
在socket编程中使用域名
网络数据传输时的大小端问题
socket编程实现文件传输功能
如何优雅地断开TCP连接?
图解TCP四次握手断开连接
详细分析TCP数据的传输过程
SqlServer 利用游标批量更新数据
BOS只读状态修改
SQL Server等待事件—PAGEIOLATCH_EX
数据库多行转换为单一列
获取数据表最后最后访问,修改,更新,
计算经历的时间
SQL查询结果自定义排序
修改数据库默认位置
日期简单加或减
从日期获取年,月或日