Reset Image Size 2
你会留意到Insus.NET在前一次的写了Reset Image Size的功能http://www.cnblogs.com/insus/articles/1909037.html,这个功能是在图片显示时去做图片缩略,有网友向Insus.NET提及,这样做有点不好,就是每run一次,系统就要缩略生成一次,这样会有损性能,希望能改善一下。为了改善性能,哪只有在图片上传时或在图片管理时,实现一个功能保存一份缩略图在目录中。
下面是代码(部分),请参考:

System.Drawing.Image imgOriginal = System.Drawing.Image.FromFile(originalImagePath);
//获取原图片的的宽度与高度
int originalWidth = imgOriginal.Width;
int originalHeight = imgOriginal.Height;
//定义缩略图片宽度和高度
int thumbnailWidth, thumbnailHeight;
//如果原图片的宽度与高度都小于缩略图片尺寸
if (originalWidth < thumbnailSize && originalHeight < thumbnailSize)
{
thumbnailWidth = originalWidth; //宽度等于原宽度
thumbnailHeight = originalHeight;//高度等于原高度
}
//如果原图片宽度大于原图片的高度
else if (originalWidth > originalHeight)
{
thumbnailWidth = thumbnailSize; //宽度等于缩略图片尺寸
thumbnailHeight = originalHeight * thumbnailSize / originalWidth; //高度做相应比例缩小
}
//如果原图片高度大于原图片的宽度
else
{
thumbnailWidth = originalWidth * thumbnailSize / originalHeight; //宽度做相应比例缩小
thumbnailHeight = thumbnailSize; //高度等于缩略图片尺寸
}
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(thumbnailWidth, thumbnailHeight);
System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap);
//设置缩略图片质量
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.DrawImage(imgOriginal, 0, 0, thumbnailWidth, thumbnailHeight);
// 保存缩略图片
bitmap.Save(imageSavePath);
//获取原图片的的宽度与高度
int originalWidth = imgOriginal.Width;
int originalHeight = imgOriginal.Height;
//定义缩略图片宽度和高度
int thumbnailWidth, thumbnailHeight;
//如果原图片的宽度与高度都小于缩略图片尺寸
if (originalWidth < thumbnailSize && originalHeight < thumbnailSize)
{
thumbnailWidth = originalWidth; //宽度等于原宽度
thumbnailHeight = originalHeight;//高度等于原高度
}
//如果原图片宽度大于原图片的高度
else if (originalWidth > originalHeight)
{
thumbnailWidth = thumbnailSize; //宽度等于缩略图片尺寸
thumbnailHeight = originalHeight * thumbnailSize / originalWidth; //高度做相应比例缩小
}
//如果原图片高度大于原图片的宽度
else
{
thumbnailWidth = originalWidth * thumbnailSize / originalHeight; //宽度做相应比例缩小
thumbnailHeight = thumbnailSize; //高度等于缩略图片尺寸
}
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(thumbnailWidth, thumbnailHeight);
System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap);
//设置缩略图片质量
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.DrawImage(imgOriginal, 0, 0, thumbnailWidth, thumbnailHeight);
// 保存缩略图片
bitmap.Save(imageSavePath);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异