天天看點

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;