请教高手 GDI+ 如何设置缩略图的图片质量?这段代码应该如何改?

lijing3333 lijing3333 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

public void CreateMinImage(string originalImagePath, string thumbnailPath, int width, int height, int isThumbnail)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(originalImagePath));

int towidth = width;
int toheight = height;

int ow = originalImage.Width;
int oh = originalImage.Height;

if (isThumbnail.Equals(1))
{

if (originalImage.Width / originalImage.Height >= width / height)
{
if (originalImage.Width > width)
{
towidth = width;
toheight = (originalImage.Height * width) / originalImage.Width;
}
else
{
towidth = originalImage.Width;
toheight = originalImage.Height;
}
}
else
{
if (originalImage.Height > height)
{
toheight = height;
towidth = (originalImage.Width * height) / originalImage.Height;
}
else
{
towidth = originalImage.Width;
toheight = originalImage.Height;
}
}
}

//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);

//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);


//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);

//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight));

try
{
//以jpg格式保存缩略图
string FileExt = Path.GetFileNameWithoutExtension(originalImagePath);
bitmap.Save(HttpContext.Current.Server.MapPath(thumbnailPath) + FileExt + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}

}


这是我现在用的。。 但是图片缩略的太小了。。 才8kb 导致图片质量很不好。。。 这段代码如何修改 让缩略的图片质量高一点? 我看网上他们的缩略图片效果都挺好的 也才20kb 请教了!!!
...全文

相关推荐

VC++ GDI+ CImageList缩略图 常用格式图片浏览器

VC++ GDI+ CImageList缩略图 常用格式图片浏览器 by:VS2008 win7 压缩包内有源码以及release版本

antion692980794

C# WinForm实现高性能图片浏览器:双缓冲、GDI+绘制与交互优化

在桌面应用开发中,图片浏览功能看似简单,但面对高分辨率大图与海量文件时,性能与交互体验成为真正挑战。GDI+作为Windows图形绘制核心,其双缓冲机制能有效消除界面闪烁,而合理的缩略图缓存策略则解决了快速翻页时的内存压力。本文围绕C# WinForm技术栈,从图像加载、绘制优化到鼠标键盘交互,系统讲解如何构建一个流畅的图片浏览器。通过目录异步读取、两级缩略图缓存、自适应缩放与动画过渡等实践,帮助开发者摆脱PictureBox的局限,掌握底层绘制与事件协调能力。无论是集成到上位机项目,还是独立工具开发,这套

我说老李你说黑

Delphi图片浏览器开发:从源码移植到现代IDE的完整指南

在桌面应用开发中,图像浏览与处理是常见需求,其核心在于高效解码、渲染与界面交互。传统Delphi项目常依赖第三方控件实现类似ACDSee的功能,但随着IDE版本迭代,控件兼容性问题频发,导致开发受阻。通过源码级移植,开发者可深入理解图像处理原理,掌握内存管理、异步加载等关键技术,提升工程实践能力。本文聚焦Delphi 7到现代版本的迁移,涵盖Unicode适配、第三方库替换、性能优化等核心环节,并结合Skia图形库升级方案,为构建高性能图片浏览器提供完整路径。

weixin_34342992

C#批量图片格式转换实战:Bitmap.Save与ImageFormat选型指南

图片格式转换是图像处理系统与桌面工具开发中的常见需求,而C#通过System.Drawing中的Bitmap类和ImageFormat枚举提供了轻量级解决方案。理解Save方法的重载原理与编码器的工作机制,是避免扩展名欺骗和输出异常的关键。本文从位图解码、格式压缩行为、透明通道差异等基础概念出发,分析JPEG、PNG、GIF、BMP四种格式的适用场景,并结合WinForms实战案例,讲解目录遍历、批量转换、JPEG质量参数控制以及GDI+文件锁与内存缓冲的优化技巧。针对GIF动图只保留首帧、OutOfMem

木子淇

通过GDI快速加载缩略图

GDI快速加载缩略图,占内存小,效果更胜于控件直接显示

不全
评论 5
收藏 已收藏
分享
返回顶部
lijing3333
.NET社区 62,272 成员 668,968 内容