c# 生成自定义图片
程序员文章站
2022-04-12 09:41:10
制作网络下载的略缩图 ......
using system.drawing; using system.io; using system.drawing.imaging; using system; namespace treads { /// <summary> /// 生成略缩图 /// </summary> public class class2 { private image srcimage; private string srcfilename= @"x";//获取图片的路径 private string srcfilename1 = @"x";//要保持图片的新路径 /// <summary> /// 回调 /// </summary> /// <returns></returns> public bool thumbnailcallback() { return false; } /// <summary> /// 保存缩略图 /// </summary> /// <param name="width"></param> /// <param name="height"></param> public void savethumbnailimage(int width, int height) { switch (path.getextension(srcfilename).tolower()) { case ".png": saveimage(width, height, imageformat.png); break; case ".gif": saveimage(width, height, imageformat.gif); break; default: saveimage(width, height, imageformat.jpeg); break; } } /// <summary> /// 生成缩略图并保存 /// </summary> /// <param name="width">缩略图的宽度</param> /// <param name="height">缩略图的高度</param> /// <param name="imgformat">保存的图像格式</param> /// <returns>缩略图的image对象</returns> public void saveimage(int width, int height, imageformat imgformat) { srcimage = image.fromfile(srcfilename); if (imgformat != imageformat.gif && (srcimage.width > width) || (srcimage.height > height)) { image img; image.getthumbnailimageabort callb = new image.getthumbnailimageabort(thumbnailcallback); img = srcimage.getthumbnailimage(width, height, callb, intptr.zero); srcimage.dispose(); img.save(srcfilename1, imgformat); img.dispose(); } } } }
制作网络下载的略缩图
/// <summary> /// 制作远程缩略图 /// </summary> /// <param name="url">图片url</param> /// <param name="newfilename">新图路径</param> /// <param name="maxwidth">最大宽度</param> /// <param name="maxheight">最大高度</param> public static void makeremotethumbnailimage(string url, string newfilename, int maxwidth, int maxheight) { stream stream = getremoteimage(url); if (stream == null) return; image original = image.fromstream(stream); stream.close(); makethumbnailimage(original, newfilename, maxwidth, maxheight); } /// <summary> /// 获取图片流 /// </summary> /// <param name="url">图片url</param> /// <returns></returns> private static stream getremoteimage(string url) { httpwebrequest request = (httpwebrequest)httpwebrequest.create(url); request.method = "get"; request.contentlength = 0; request.timeout = 20000; httpwebresponse response = null; try { response = (httpwebresponse)request.getresponse(); return response.getresponsestream(); } catch { return null; } } /// <summary> /// 裁剪图片并保存 /// </summary> /// <param name="filename">源图路径(绝对路径)</param> /// <param name="newfilename">缩略图路径(绝对路径)</param> /// <param name="maxwidth">缩略图宽度</param> /// <param name="maxheight">缩略图高度</param> /// <param name="cropwidth">裁剪宽度</param> /// <param name="cropheight">裁剪高度</param> /// <param name="x">x轴</param> /// <param name="y">y轴</param> public static bool makethumbnailimage(string filename, string newfilename, int maxwidth, int maxheight, int cropwidth, int cropheight, int x, int y) { byte[] imagebytes = file.readallbytes(filename); image originalimage = image.fromstream(new system.io.memorystream(imagebytes)); bitmap b = new bitmap(cropwidth, cropheight); try { using (graphics g = graphics.fromimage(b)) { //设置高质量插值法 g.interpolationmode = interpolationmode.highqualitybicubic; //设置高质量,低速度呈现平滑程度 g.smoothingmode = smoothingmode.antialias; g.pixeloffsetmode = pixeloffsetmode.highquality; //清空画布并以透明背景色填充 g.clear(color.transparent); //在指定位置并且按指定大小绘制原图片的指定部分 g.drawimage(originalimage, new rectangle(0, 0, cropwidth, cropheight), x, y, cropwidth, cropheight, graphicsunit.pixel); image displayimage = new bitmap(b, maxwidth, maxheight); saveimage(displayimage, newfilename, getcodecinfo("image/" + getformat(newfilename).tostring().tolower())); return true; } } catch (system.exception e) { throw e; } finally { originalimage.dispose(); b.dispose(); } }
上一篇: CorelDRAW界面图标怎么调整大小?