当前位置:网站首页>VB.net GIF(制作、拆解——优化代码,类库——5)
VB.net GIF(制作、拆解——优化代码,类库——5)
2022-07-04 04:58:00 【小虞163】
我之前写过一篇文章,是制作和拆解GIF的文章,但是代码写的太复杂,我看完了自己都笑了
这一次在类库里完成gif的制作与拆解
先引用dll,名字叫:Gif.Components,可以在百度上搜索下载得到下载Gif.Components
https://dlc2.pconline.com.cn/filedown_1609054_10722470/Bv6pnYGm/pconline1517912109089.rar
下载完找到x86(32位),里面有Gif.Components.dll,如果需要x64,只要反编译得到C#源代码,再使用x64模式生成Gif.Components.dll(其实没有必要)
在类库中新建一个类,叫:GifMake
写:
Imports System.Drawing
Imports System.Windows.Forms
Public Class GifMake
Protected Image As Imaging.FrameDimension
Protected bmp As Bitmap
Protected bmp2() As Bitmap
Public AGE As New Gif.Components.AnimatedGifEncoder()
''' <summary>
''' 拆解gif,请直接调用
''' </summary>
''' <param name="gif">传入gif文件的绝对路径</param>
''' <param name="SavePath">传入保存文件的文件夹的绝对路径</param>
''' <param name="SaveName">保存文件的名称,可以不写,即直接传入""</param>
''' <param name="SaveStyle">保存文件的格式:例如.jpg;.png;.bmp</param>
''' <returns>null</returns>
Public Function SplitGif(gif As String, SavePath As String, SaveName As String, SaveStyle As String)
bmp = New Bitmap(gif)
Image = New Imaging.FrameDimension(bmp.FrameDimensionsList(0))
Dim bmp2(bmp.GetFrameCount(Image) - 1)
For i As Integer = 0 To bmp2.Count - 1
bmp.SelectActiveFrame(Image, i)
bmp2(i) = New Bitmap(bmp)
Next
For i As Integer = 0 To bmp2.Count - 1
bmp2(i).Save(SavePath & "\" & SaveName & i & "." & SaveStyle)
Next
Return vbNull
End Function
''' <summary>
''' 合成GIF
''' </summary>
''' <param name="sleep">每一帧间隔的毫秒数</param>
''' <returns>null</returns>
Public Function CraftGif(sleep As Integer)
Dim open As New OpenFileDialog
open.Filter = "图片文件|*.jpg;*.png;*.ico;*.bmp;*.jpeg;*.wmf;*.emf;*.gif"
open.Title = "选择图片"
open.Multiselect = True
open.ShowDialog()
If IO.File.Exists(open.FileName) = True Then
Dim count As Integer
count = open.FileNames.Count
Dim save As New SaveFileDialog
save.Filter = "GIF文件|*.gif"
save.Title = "保存GIF"
save.ShowDialog()
AGE.Start(save.FileName)
AGE.SetDelay(sleep)
AGE.SetRepeat(0)
Dim i As Integer = 0
While i < count
AGE.AddFrame(Drawing.Image.FromFile(open.FileNames(i)))
Math.Max(Threading.Interlocked.Increment(i), i - 1)
End While
AGE.Finish()
End If
Return vbNull
End Function
End Class
在主窗体调用
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
GDIgif.SplitGif("C:\Users\Administrator\Desktop\test.gif", "C:\Users\Administrator\Desktop", "", "jpg")
End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
GDIgif.CraftGif(200)
End Sub在函数段:SplitGif可以自己修改,这里没有什么正确的写法,可以仿照CraftGIF中写openFileDialog和saveFileDialog来保存图片
确实要比之前写的简洁了不少
边栏推荐
- 力扣 第 300 场周赛
- Etcd database source code analysis - initialization overview
- 基于单片机的太阳能杀虫系统
- ETCD数据库源码分析——初始化总览
- Annex II: confidentiality agreement for offensive and defensive drills docx
- Unity2d -- character moves and turns
- Zhongke Panyun - module a infrastructure setting and safety reinforcement scoring standard
- LM小型可编程控制器软件(基于CoDeSys)笔记二十二:错误4268/4052
- Remote desktop client RDP
- Notes on the paper "cross view transformers for real time map view semantic segmentation"
猜你喜欢

KMP match string

The data mark is a piece of fat meat, and it is not only China Manfu technology that focuses on this meat

2022年A特种设备相关管理(电梯)考试题模拟考试平台操作

如何构建属于自己的知识引擎?社群开放申请

Daily question brushing record (12)

简单g++和gdb调试

补某视频网站的js,进行视频解密

Simulink与Arduino串口通信

LM small programmable controller software (based on CoDeSys) note 22: error 4268/4052

Useful plug-ins for vscode
随机推荐
laravel 中获取刚刚插入的记录的id
The first introduction, stages and methods of defense system breakthrough from the perspective of the red team
LabVIEW错误对话框的出现
Electronic components mall and data manual download website summary
Two sides of the evening: tell me about the bloom filter and cuckoo filter? Application scenario? I'm confused..
[matlab] general function of communication signal modulation bandpass filter
LM小型可编程控制器软件(基于CoDeSys)笔记二十一:错误3703
Rollup各组件作用
TCP状态转换图
Secondary vocational group network security - memory Forensics
NTFS 安全权限
Yyds dry goods inventory TCP & UDP
LM small programmable controller software (based on CoDeSys) note XXI: error 3703
Annex 2-2 confidentiality commitment docx
appliedzkp的zkevm(12)State Proof
【QT】定时器
Annex III: scoring standard of the defender docx
RSA加密应用常见缺陷的原理与实践
[matlab] matlab simulation - simulate the AM modulation process of the modulation system
2022危险化学品经营单位安全管理人员上岗证题库及答案