图片缩略图生成功能
最近研究了一下图片缩略图,感觉很头疼,还是把代码分享一下:
private void DrawImageRectRect(string rawImgPath, string newImgPath, int width, int height)
{
System.Drawing.Image imageFrom = System.Drawing.Image.FromFile(rawImgPath);
// 源图宽度及高度
int imageFromWidth = imageFrom.Width;
int imageFromHeight = imageFrom.Height;
//在原画布中的位置
int X, Y;
//在原画布中取得的长宽
int bitmapWidth, bitmapHeight;
//// 根据源图及欲生成的缩略图尺寸,计算缩略图的实际尺寸及其在"画布"上的位置
if (imageFromWidth / width > imageFromHeight / height)
{
bitmapWidth = (width * imageFromHeight) / height;
bitmapHeight = imageFromHeight;
X = (imageFromWidth - bitmapWidth) / 2;
Y = 0;
}
else
{
bitmapWidth = imageFromWidth;
bitmapHeight = (height * imageFromWidth) / width;
X = 0;
Y = (imageFromHeight - bitmapHeight) / 2;
}
// 创建画布
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bmp);
// 用白色清空
g.Clear(Color.White);
// 指定高质量的双三次插值法。执行预筛选以确保高质量的收缩。此模式可产生质量最高的转换图像。
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
// 指定高质量、低速度呈现。
g.SmoothingMode = SmoothingMode.HighQuality;
// 在指定位置并且按指定大小绘制指定的 Image 的指定部分。
g.DrawImage(imageFrom, new Rectangle(0, 0, width, height), new Rectangle(X, Y, bitmapWidth, bitmapHeight), GraphicsUnit.Pixel);
try
{
//经测试 .jpg 格式缩略图大小与质量等最优
bmp.Save(newImgPath, ImageFormat.Jpeg);
}
catch
{
}
finally
{
//显示释放资源
imageFrom.Dispose();
bmp.Dispose();
g.Dispose();
}
}
希望对同志们有帮助.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?