zoukankan      html  css  js  c++  java
  • 动态GIF图片处理

    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);
            }
        }
        //http://www.codeproject.com/KB/GDI-plus/NGif.aspx
        public bool CreateGifImage()
        {
            String [] imageFilePaths = new String[]{"c:\\01.png","c:\\02.png","c:\\03.png"}; 
            String outputFilePath = "c:\\test.gif";
            AnimatedGifEncoder e = new AnimatedGifEncoder();
            e.Start( outputFilePath );
            e.SetDelay(500);
            //-1:no repeat,0:always repeat
            e.SetRepeat(0);
            for (int i = 0, count = imageFilePaths.Length; i < count; i++ ) 
            {
            e.AddFrame( Image.FromFile( imageFilePaths[i] ) );
            }
            e.Finish();
            /* extract Gif */
            string outputPath = "c:\\";
            GifDecoder gifDecoder = new GifDecoder();
            gifDecoder.Read( "c:\\test.gif" );
            for ( int i = 0, count = gifDecoder.GetFrameCount(); i < count; i++ ) 
            {
            Image frame = gifDecoder.GetFrame( i ); // frame i
            frame.Save( outputPath + Guid.NewGuid().ToString() 
                                   + ".png", ImageFormat.Png );
            }
        }
    }
  • 相关阅读:
    嵌入式实验一:LED灯点亮
    [转] sql中的in与not in,exists与not exists的区别
    订单管理系统基本情况
    solaris系统分区及格式化
    百度超大网盘邀请码,点击可以获得额外的300M哦
    vb设置代理ip
    我看到一种防伪查询系统,叫做西门防伪防伪查询系统,不知道好不好用。
    零碎知识点整理
    初学WCF之消息模式3——双工模式
    HTTP 错误 500.21 Internal Server Error
  • 原文地址:https://www.cnblogs.com/bober/p/2194108.html
Copyright © 2011-2022 走看看