当前位置:网站首页>VB.net GIF(制作、拆解——优化代码,类库——5)
VB.net GIF(制作、拆解——优化代码,类库——5)
2022-07-04 04:58:00 【小虞163】
我之前写过一篇文章,是制作和拆解GIF的文章,但是代码写的太复杂,我看完了自己都笑了
这一次在类库里完成gif的制作与拆解
先引用dll,名字叫:Gif.Components,可以在百度上搜索下载得到下载Gif.Componentshttps://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来保存图片
确实要比之前写的简洁了不少
边栏推荐
- 【MATLAB】MATLAB 仿真数字基带传输系统 — 双极性基带信号(第 I 类部分响应波形)的眼图
- Remote desktop client RDP
- [matlab] matlab simulation modulation system SSB system
- Fault analysis | mongodb 5.0 reports an error, and the legal instruction solves it
- c语言经典指针和数组笔试题解析
- Flask
- Zhongke panyun-d module analysis and scoring standard
- 【QT】定时器
- Write a complete answer applet (including single choice questions, judgment questions and multiple topics) (III) single choice questions, judgment questions, and the first question display
- Character types of C language
猜你喜欢
KMP match string
[paper summary] zero shot semantic segmentation
2022 t elevator repair operation certificate examination question bank and simulation examination
Character types of C language
Headache delayed double deletion
小程序毕业设计---美食、菜谱小程序
2022年R2移动式压力容器充装复训题库及答案
基于单片机的太阳能杀虫系统
Daily question brushing record (12)
[QT] timer
随机推荐
Encryption and decryption
LM small programmable controller software (based on CoDeSys) note XXI: error 3703
[paper summary] zero shot semantic segmentation
[matlab] communication signal modulation general function - low pass filter
[matlab] matlab simulation - simulate the AM modulation process of the modulation system
Headache delayed double deletion
The first introduction, stages and methods of defense system breakthrough from the perspective of the red team
Analysis of classical pointer and array written test questions in C language
中職組網絡安全—內存取證
Zhongke Panyun - data analysis and forensics packet flag
Rollup各组件作用
June 2022 summary
2022G2电站锅炉司炉特种作业证考试题库及答案
LM小型可编程控制器软件(基于CoDeSys)笔记二十二:错误4268/4052
cmake
如何使用postman实现简单的接口关联【增删改查】
空洞卷积、可变形卷积、可变形ROI Pooling
National vocational college skills competition (secondary vocational group) network security competition questions - Analysis
拓扑排序和关键路径的图形化显示
Graduation design of small programs -- small programs of food and recipes