请教高手 GDI+ 如何设置缩略图的图片质量?这段代码应该如何改?
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版本
C# WinForm实现高性能图片浏览器:双缓冲、GDI+绘制与交互优化
在桌面应用开发中,图片浏览功能看似简单,但面对高分辨率大图与海量文件时,性能与交互体验成为真正挑战。GDI+作为Windows图形绘制核心,其双缓冲机制能有效消除界面闪烁,而合理的缩略图缓存策略则解决了快速翻页时的内存压力。本文围绕C# WinForm技术栈,从图像加载、绘制优化到鼠标键盘交互,系统讲解如何构建一个流畅的图片浏览器。通过目录异步读取、两级缩略图缓存、自适应缩放与动画过渡等实践,帮助开发者摆脱PictureBox的局限,掌握底层绘制与事件协调能力。无论是集成到上位机项目,还是独立工具开发,这套
Delphi图片浏览器开发:从源码移植到现代IDE的完整指南
在桌面应用开发中,图像浏览与处理是常见需求,其核心在于高效解码、渲染与界面交互。传统Delphi项目常依赖第三方控件实现类似ACDSee的功能,但随着IDE版本迭代,控件兼容性问题频发,导致开发受阻。通过源码级移植,开发者可深入理解图像处理原理,掌握内存管理、异步加载等关键技术,提升工程实践能力。本文聚焦Delphi 7到现代版本的迁移,涵盖Unicode适配、第三方库替换、性能优化等核心环节,并结合Skia图形库升级方案,为构建高性能图片浏览器提供完整路径。
C#批量图片格式转换实战:Bitmap.Save与ImageFormat选型指南
图片格式转换是图像处理系统与桌面工具开发中的常见需求,而C#通过System.Drawing中的Bitmap类和ImageFormat枚举提供了轻量级解决方案。理解Save方法的重载原理与编码器的工作机制,是避免扩展名欺骗和输出异常的关键。本文从位图解码、格式压缩行为、透明通道差异等基础概念出发,分析JPEG、PNG、GIF、BMP四种格式的适用场景,并结合WinForms实战案例,讲解目录遍历、批量转换、JPEG质量参数控制以及GDI+文件锁与内存缓冲的优化技巧。针对GIF动图只保留首帧、OutOfMem
通过GDI快速加载缩略图
GDI快速加载缩略图,占内存小,效果更胜于控件直接显示


