C# 求将较大的JPG图片按比例缩小到宽500的大小图片的代码

 我来答
lhyAiralhy
推荐于2017-09-23 · TA获得超过469个赞
知道小有建树答主
回答量:327
采纳率:0%
帮助的人:263万
展开全部
/// <summary>
/// 图片等比缩放
/// </summary>
/// <param name="postedfile">原图</param>
/// <param name="savepath">缩略图存放地址</param>
/// <param name="targetwidth">指定的最大宽度</param>
/// <param name="targetheight">指定的最大高度</param>
public static void zoomauto(string initpath,string savepath, double targetwidth, double targetheight)
{
//创建目录
string dir = Path.GetDirectoryName(savepath);
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);

//原始图片(获取原始图片创建对象,并使用流中嵌入的颜色管理信息)
Image initimage = Image.FromFile(initpath);

//原图宽高均小于模版,不作处理,直接保存
if (initimage.Width <= targetwidth && initimage.Height <= targetheight)
{
//保存
initimage.Save(savepath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
else
{
//缩略图宽、高计算
double newwidth = initimage.Width;
double newheight = initimage.Height;

//宽大于高或宽等于高(横图或正方)
if (initimage.Width > initimage.Height || initimage.Width == initimage.Height)
{
//如果宽大于模版
if (initimage.Width > targetwidth)
{
//宽按模版,高按比例缩放
newwidth = targetwidth;
newheight = initimage.Height * (targetwidth / initimage.Width);
}
}
//高大于宽(竖图)
else
{
//如果高大于模版
if (initimage.Height > targetheight)
{
//高按模版,宽按比例缩放
newheight = targetheight;
newwidth = initimage.Width * (targetheight / initimage.Height);
}
}

//生成新图
//新建一个bmp图片
Image newimage = new Bitmap((int)newwidth, (int)newheight);
//新建一个画板
Graphics newg = Graphics.FromImage(newimage);

//设置质量
newg.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
newg.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

//置背景色
newg.Clear(Color.White);
//画图
newg.DrawImage(initimage, new Rectangle(0, 0, newimage.Width, newimage.Height), new Rectangle(0, 0, initimage.Width, initimage.Height), GraphicsUnit.Pixel);

//保存缩略图
newimage.Save(savepath+"123.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);

//释放资源
newg.Dispose();
newimage.Dispose();
initimage.Dispose();
}
}

调用
ptimage ptimage = new ptimage();
ptimage.zoomauto(@"C:\", @"D:\", 500, 200);
两个路径自己指定 第一个是图片路径,带文件名和扩展名,第二个是存储路径到文件夹
其他的看注释吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式