利用C#實(shí)現(xiàn)分割GIF圖片
文章描述
弱水三千,我只取一瓢飲。一張動(dòng)圖,我只想要其中一幀。如何將一個(gè)GIF動(dòng)態(tài)圖分割成一幀一幀的圖片?其實(shí)現(xiàn)在這樣的工具隨處可見,無論是在手機(jī)自帶的相冊(cè)中還是電腦上的照片查看軟件,大部分都集成了圖片編輯的功能,實(shí)在沒有,從網(wǎng)上也能搜羅下來一大堆軟件。所以真的想要拿到我們需要的某一幀圖片的話,真的易如反掌。
同樣的,我們使用C#代碼實(shí)現(xiàn)起來的話,也是相當(dāng)簡(jiǎn)單(不得不說,是真的簡(jiǎn)單,簡(jiǎn)單到我這篇還得想盡一切辦法來湊字?jǐn)?shù)。我已經(jīng)不知道我是來分享技術(shù)文章的,還是來敘事的,亦或是來抒情的。)
開發(fā)環(huán)境
.NET Framework版本:4.5
開發(fā)工具
Visual Studio 2013
實(shí)現(xiàn)代碼
private void btn_load_Click(object sender, EventArgs e) { Image img = Image.FromFile(textBox1.Text); lb_img.Image = img; } private void btn_split_Click(object sender, EventArgs e) { string savePath = Application.StartupPath + "\\images\\"; if (Directory.Exists(savePath)) { Directory.Delete(savePath, true); } Directory.CreateDirectory(savePath); Image img = lb_img.Image; //FrameDimension frameDim = new FrameDimension(img.FrameDimensionsList[0]); int frame = img.GetFrameCount(FrameDimension.Time); while (frame-- > 0) { img.SelectActiveFrame(FrameDimension.Time, frame); img.Save(savePath + "frame_" + frame + ".jpg", ImageFormat.Jpeg); } if (MessageBox.Show("GIF分割完成,是否打開文件夾?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { Process.Start(savePath); } }
實(shí)現(xiàn)效果
代碼解析:可以看到的是,以上代碼量并不多。其中最重要的只有三行代碼,也就是用來分割的代碼。但是這里再稍微介紹一下關(guān)于gif動(dòng)態(tài)圖如何在頁(yè)面上顯示的,本程序中是使用了lable控件來加載動(dòng)態(tài)圖的,首先需要先將AutoSize屬性設(shè)置為false,然后設(shè)置Dock屬性為Fill。最后給Image屬性賦值讀取到的Image對(duì)象即可。
到此這篇關(guān)于利用C#實(shí)現(xiàn)分割GIF圖片的文章就介紹到這了,更多相關(guān)C#分割GIF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法,較為詳細(xì)的分析了C#基于DataTable保存Excel數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08C#中的DataSet、string、DataTable、對(duì)象轉(zhuǎn)換成Json的實(shí)現(xiàn)代碼
這篇文章主要介紹了C#中的DataSet、string、DataTable、對(duì)象轉(zhuǎn)換成Json的實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-09-09C#動(dòng)態(tài)代碼生成控件后其他事件不能獲取該控件值的解決方法
這篇文章主要給大家介紹了關(guān)于C#動(dòng)態(tài)代碼生成控件后其他事件不能獲取該控件值的解決方法,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07解決C# X64應(yīng)用程序中讀取WParam溢出的問題
C#應(yīng)用程序是AnyCPU的,在一段處理鼠標(biāo)滾輪WM_MOUSEWHEEL的代碼里碰到溢出的問題OverflowException2013-04-04automation服務(wù)器不能創(chuàng)建對(duì)象 解決方法
本文主要介紹如何解決“automation服務(wù)器不能創(chuàng)建對(duì)象”錯(cuò)誤,從而解決Visual Studio.Net不能正常使用的問題,需要的朋友可以參考下。2016-06-06C#語(yǔ)言async?await之迭代器工作原理示例解析
這篇文章主要為大家介紹了C#語(yǔ)言async?await之迭代器工作原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05C# System.TypeInitializationException 異常處理方案
這篇文章主要介紹了C# System.TypeInitializationException 異常處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02