C#的图片处理类,生成高质量缩略图,代码已测试过,效果很好

本文介绍了一个使用 C# 实现的高质量图片缩略图生成方法。该方法支持多种模式,包括指定宽度高度缩放(可能变形)、按比例缩放等,并通过设置插值法和平滑程度确保输出图片的质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 public static void MakeSmallPic(string originalImagePath, string thumbnailPath, int width, int height, string mode)
        {

            
try
            {

                System.Drawing.Image originalImage 
= System.Drawing.Image.FromFile(originalImagePath);

                
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图片
                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.High;

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

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

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

                
try
                {
                    
//以jpg格式保存缩略图
                    bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
                
catch (System.Exception e)
                {
                    
throw e;
                }
                
finally
                {
                    originalImage.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                }
            }
            
catch
            {
                
throw;
            }
        }

 

C#的图片处理类,生成高质量缩略图,代码已测试过,效果很好

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值