C#绘制图片的几个处理方法
2008-06-03 09:53
405 查看
(1)如何获取.gif图片中的各个帧?
(2)如何获取图片的缩略图?
(3)如何“截取”图片的指定区域?
(2)如何获取图片的缩略图?
(3)如何“截取”图片的指定区域?
using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; public class ImageHelper { /// <summary> /// 获取图片中的各帧 /// </summary> /// <param name="pPath">图片路径</param> /// <param name="pSavePath">保存路径</param> public void GetFrames(string pPath, string pSavedPath) { Image gif = Image.FromFile(pPath); FrameDimension fd = new FrameDimension(gif.FrameDimensionsList[0]); //获取帧数(gif图片可能包含多帧,其它格式图片一般仅一帧) int count = gif.GetFrameCount(fd); //以Jpeg格式保存各帧 for (int i = 0; i < count; i++) { gif.SelectActiveFrame(fd, i); gif.Save(pSavedPath + "//frame_" + i + ".jpg", ImageFormat.Jpeg); } } /// <summary> /// 获取图片缩略图 /// </summary> /// <param name="pPath">图片路径</param> /// <param name="pSavePath">保存路径</param> /// <param name="pWidth">缩略图宽度</param> /// <param name="pHeight">缩略图高度</param> /// <param name="pFormat">保存格式,通常可以是jpeg</param> public void GetSmaller(string pPath, string pSavedPath, int pWidth, int pHeight) { try { Image smallerImg; Image originalImg = Image.FromFile(pPath); Image.GetThumbnailImageAbort callback = new Image.GetThumbnailImageAbort(ThumbnailCallback); smallerImg = originalImg.GetThumbnailImage(pWidth, pHeight, callback, IntPtr.Zero); smallerImg.Save(pSavedPath + "//smaller.jpg", ImageFormat.Jpeg); } catch (Exception x) { // } } /// <summary> /// 获取图片指定部分 /// </summary> /// <param name="pPath">图片路径</param> /// <param name="pSavePath">保存路径</param> /// <param name="pPartStartPointX">目标图片开始绘制处的坐标X值(通常为)</param> /// <param name="pPartStartPointY">目标图片开始绘制处的坐标Y值(通常为)</param> /// <param name="pPartWidth">目标图片的宽度</param> /// <param name="pPartHeight">目标图片的高度</param> /// <param name="pOrigStartPointX">原始图片开始截取处的坐标X值</param> /// <param name="pOrigStartPointY">原始图片开始截取处的坐标Y值</param> /// <param name="pFormat">保存格式,通常可以是jpeg</param> public void GetPart(string pPath, string pSavedPath, int pPartStartPointX, int pPartStartPointY, int pPartWidth, int pPartHeight, int pOrigStartPointX, int pOrigStartPointY) { Image originalImg = Image.FromFile(pPath); Bitmap partImg = new Bitmap(pPartWidth, pPartHeight); Graphics graphics = Graphics.FromImage(partImg); Rectangle destRect = new Rectangle(new Point(pPartStartPointX, pPartStartPointY), new Size(pPartWidth, pPartHeight));//目标位置 Rectangle origRect = new Rectangle(new Point(pOrigStartPointX, pOrigStartPointY), new Size(pPartWidth, pPartHeight));//原图位置(默认从原图中截取的图片大小等于目标图片的大小) graphics.DrawImage(originalImg, destRect, origRect, GraphicsUnit.Pixel); partImg.Save(pSavedPath + "//part.jpg", ImageFormat.Jpeg); } public bool ThumbnailCallback() { return false; } }
相关文章推荐
- 图像处理中几个基本的处理方法c#代码实现
- 对图片进行切片处理,对BitBlt()方法的研究心得--c#
- C#生成图片缩略图、水印及上传的几个通用方法
- C#图片处理常见方法性能比较
- C#字符串处理几个方法
- iOS图形绘制方法汇总及图片处理
- 提供几个处理图片内存溢出的方法
- C# 后台处理图片的几种方法
- C#图片处理常见方法性能比较
- C#开发——简单的图片处理方法(更新中)
- c# 上传图片流,php端(laravel框架)接收处理方法
- 基于位图(Bitmap、BitmapData)的图片处理方法(C#)
- C#生成图片缩略图、水印及上传的几个通用方法
- C#验证码图片的绘制方法介绍
- C#生成图片缩略图、水印及上传的几个通用方法
- C#图片处理常见方法性能比较
- C#日期格式化的几种处理方法
- C#实现绘制浮雕图片效果实例
- android 图片处理的各种方法
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法