從gif動畫圖像中導出楨的方法實現
近幾天,一直在搞gif文件格式,在網上找到一個,正在分析。可以說gif圖像在幾種圖像格式里面算是比較復雜的了,廢話少說,先實現一個從gif動畫里面導出楨來的方法:
效果如下:
原來gif動畫圖像:
導出來的圖像:








代碼:
本來想在SelectActiveFrame后像處理jpeg圖像一樣黑白,但是SelectActiveFrame執行后,上次的修改都變成無效的了,郁悶。SaveAdd方法也不能用于gif格式。系統只提供了gif的解碼器,卻沒有提高編碼器。暈倒。
自己從網上找了一個,正在學習
效果如下:
原來gif動畫圖像:
導出來的圖像:
代碼:
1
public void ExportFromGif(string gifFile,string outputDir)
2
{
3
Bitmap bmp = new Bitmap(gifFile);
4
if (bmp.RawFormat.Guid != ImageFormat.Gif.Guid)
5
{
6
throw new Exception("不是gif格式的文件,格式錯誤!");
7
}
8
//獲得楨的維數
9
foreach (Guid guid in bmp.FrameDimensionsList)
10
{
11
FrameDimension frameDimension = new FrameDimension(guid);
12
//獲得gif動畫楨的數量
13
int frameCount = bmp.GetFrameCount(frameDimension);
14
//用于存放導出的圖像
15
for (int i = 0; i < frameCount; i++)
16
{
17
//選中一楨
18
int selectResult = bmp.SelectActiveFrame(frameDimension, i);
19
if (selectResult == 0)
20
{
21
Image img = Image.FromHbitmap(bmp.GetHbitmap());
22
string savePath = outputDir + Guid.NewGuid().ToString()+".jpg";
23
img.Save(savePath);
24
img.Dispose();
25
}
26
}
27
}
28
}
29
}
public void ExportFromGif(string gifFile,string outputDir)2
{3
Bitmap bmp = new Bitmap(gifFile);4
if (bmp.RawFormat.Guid != ImageFormat.Gif.Guid)5
{6
throw new Exception("不是gif格式的文件,格式錯誤!");7
}8
//獲得楨的維數9
foreach (Guid guid in bmp.FrameDimensionsList)10
{11
FrameDimension frameDimension = new FrameDimension(guid);12
//獲得gif動畫楨的數量13
int frameCount = bmp.GetFrameCount(frameDimension);14
//用于存放導出的圖像15
for (int i = 0; i < frameCount; i++)16
{17
//選中一楨18
int selectResult = bmp.SelectActiveFrame(frameDimension, i);19
if (selectResult == 0)20
{21
Image img = Image.FromHbitmap(bmp.GetHbitmap());22
string savePath = outputDir + Guid.NewGuid().ToString()+".jpg";23
img.Save(savePath);24
img.Dispose();25
}26
}27
}28
}29
}本來想在SelectActiveFrame后像處理jpeg圖像一樣黑白,但是SelectActiveFrame執行后,上次的修改都變成無效的了,郁悶。SaveAdd方法也不能用于gif格式。系統只提供了gif的解碼器,卻沒有提高編碼器。暈倒。
自己從網上找了一個,正在學習
作者:jillzhang
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


浙公網安備 33010602011771號