C#简单生成缩略图的方法
程序员文章站
2023-12-13 10:09:22
本文实例讲述了c#简单生成缩略图的方法。分享给大家供大家参考。具体实现方法如下:
///
/// 生成缩略图
/// <...
本文实例讲述了c#简单生成缩略图的方法。分享给大家供大家参考。具体实现方法如下:
/// <summary> /// 生成缩略图 /// </summary> /// <param name="originalimagepath">源图路径(物理路径)</param> /// <param name="thumbnailpath">缩略图路径(物理路径)</param> /// <param name="width">缩略图宽度</param> /// <param name="height">缩略图高度</param> /// <param name="mode">生成缩略图的方式</param> public static void makethumbnail(string originalimagepath, string thumbnailpath, int width, int height, string mode) { image originalimage = 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图片 image bitmap = new system.drawing.bitmap(towidth,toheight); //新建一个画板 graphics g = system.drawing.graphics.fromimage(bitmap); //设置高质量插值法 g.interpolationmode = system.drawing.drawing2d.interpolationmode.high; //设置高质量,低速度呈现平滑程度 g.smoothingmode = system.drawing.drawing2d.smoothingmode.highquality; //清空画布并以透明背景色填充 g.clear(color.transparent); //在指定位置并且按指定大小绘制原图片的指定部分 g.drawimage(originalimage, new rectangle(0, 0, towidth, toheight), new rectangle(x, y, ow,oh), 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(); } }
希望本文所述对大家的c#程序设计有所帮助。