天天看点

C#对图片的几种简单处理

今天贴几个图片处理的小技巧,希望对大家有用:

(1)如何获取.gif图片中的各个帧?

(2)如何获取图片的缩略图?

(3)如何“截取”图片的指定区域?

C#对图片的几种简单处理

using

 System.Drawing;

C#对图片的几种简单处理

using

 System.Drawing.Drawing2D;

C#对图片的几种简单处理

using

 System.Drawing.Imaging;

C#对图片的几种简单处理
C#对图片的几种简单处理

public

class

 ImageHelper

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

{

C#对图片的几种简单处理
C#对图片的几种简单处理

    /**//// <summary>

C#对图片的几种简单处理

    /// 获取图片中的各帧

C#对图片的几种简单处理

    /// </summary>

C#对图片的几种简单处理

    /// <param name="pPath">图片路径</param>

C#对图片的几种简单处理

    /// <param name="pSavePath">保存路径</param>

C#对图片的几种简单处理

    public void GetFrames(string pPath, string pSavedPath)

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

{

C#对图片的几种简单处理

        Image gif = Image.FromFile(pPath);

C#对图片的几种简单处理

        FrameDimension fd = new FrameDimension(gif.FrameDimensionsList[0]);

C#对图片的几种简单处理
C#对图片的几种简单处理

        //获取帧数(gif图片可能包含多帧,其它格式图片一般仅一帧)

C#对图片的几种简单处理

        int count = gif.GetFrameCount(fd);

C#对图片的几种简单处理
C#对图片的几种简单处理

        //以Jpeg格式保存各帧

C#对图片的几种简单处理

        for (int i = 0; i < count; i++)

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

{

C#对图片的几种简单处理

            gif.SelectActiveFrame(fd, i);

C#对图片的几种简单处理

            gif.Save(pSavedPath + "//frame_" + i + ".jpg", ImageFormat.Jpeg);

C#对图片的几种简单处理

        }

C#对图片的几种简单处理

    }

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

    /**//// <summary>

C#对图片的几种简单处理

    /// 获取图片缩略图

C#对图片的几种简单处理

    /// </summary>

C#对图片的几种简单处理

    /// <param name="pPath">图片路径</param>

C#对图片的几种简单处理

    /// <param name="pSavePath">保存路径</param>

C#对图片的几种简单处理

    /// <param name="pWidth">缩略图宽度</param>

C#对图片的几种简单处理

    /// <param name="pHeight">缩略图高度</param>

C#对图片的几种简单处理

    /// <param name="pFormat">保存格式,通常可以是jpeg</param>

C#对图片的几种简单处理

    public void GetSmaller(string pPath, string pSavedPath, int pWidth, int pHeight)

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

{

C#对图片的几种简单处理

        try

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

{

C#对图片的几种简单处理

            Image smallerImg;

C#对图片的几种简单处理

            Image originalImg = Image.FromFile(pPath);

C#对图片的几种简单处理

            Image.GetThumbnailImageAbort callback = new Image.GetThumbnailImageAbort(ThumbnailCallback);

C#对图片的几种简单处理

            smallerImg = originalImg.GetThumbnailImage(pWidth, pHeight, callback, IntPtr.Zero);

C#对图片的几种简单处理

            smallerImg.Save(pSavedPath + "//smaller.jpg", ImageFormat.Jpeg);

C#对图片的几种简单处理

        }

C#对图片的几种简单处理

        catch (Exception x)

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

{

C#对图片的几种简单处理

            //

C#对图片的几种简单处理

        }

C#对图片的几种简单处理

    }

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

    /**//// <summary>

C#对图片的几种简单处理

    /// 获取图片指定部分

C#对图片的几种简单处理

    /// </summary>

C#对图片的几种简单处理

    /// <param name="pPath">图片路径</param>

C#对图片的几种简单处理

    /// <param name="pSavePath">保存路径</param>

C#对图片的几种简单处理

    /// <param name="pPartStartPointX">目标图片开始绘制处的坐标X值(通常为)</param>

C#对图片的几种简单处理

    /// <param name="pPartStartPointY">目标图片开始绘制处的坐标Y值(通常为)</param>

C#对图片的几种简单处理

    /// <param name="pPartWidth">目标图片的宽度</param>

C#对图片的几种简单处理

    /// <param name="pPartHeight">目标图片的高度</param>

C#对图片的几种简单处理

    /// <param name="pOrigStartPointX">原始图片开始截取处的坐标X值</param>

C#对图片的几种简单处理

    /// <param name="pOrigStartPointY">原始图片开始截取处的坐标Y值</param>

C#对图片的几种简单处理

    /// <param name="pFormat">保存格式,通常可以是jpeg</param>

C#对图片的几种简单处理

    public void GetPart(string pPath, string pSavedPath, int pPartStartPointX, int pPartStartPointY, int pPartWidth, int pPartHeight, int pOrigStartPointX, int pOrigStartPointY)

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

{

C#对图片的几种简单处理

        Image originalImg = Image.FromFile(pPath);

C#对图片的几种简单处理
C#对图片的几种简单处理

        Bitmap partImg = new Bitmap(pPartWidth, pPartHeight);   

C#对图片的几种简单处理

        Graphics graphics = Graphics.FromImage(partImg);

C#对图片的几种简单处理

        Rectangle destRect = new Rectangle(new Point(pPartStartPointX, pPartStartPointY), new Size(pPartWidth, pPartHeight));//目标位置

C#对图片的几种简单处理

        Rectangle origRect = new Rectangle(new Point(pOrigStartPointX, pOrigStartPointY), new Size(pPartWidth, pPartHeight));//原图位置(默认从原图中截取的图片大小等于目标图片的大小)

C#对图片的几种简单处理
C#对图片的几种简单处理

        graphics.DrawImage(originalImg, destRect,origRect,GraphicsUnit.Pixel);

C#对图片的几种简单处理

        partImg.Save(pSavedPath + "//part.jpg", ImageFormat.Jpeg);

C#对图片的几种简单处理

    }

C#对图片的几种简单处理
C#对图片的几种简单处理

    public bool ThumbnailCallback()

C#对图片的几种简单处理
C#对图片的几种简单处理
C#对图片的几种简单处理

{

C#对图片的几种简单处理

        return false;