当前位置:网站首页>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 场周赛
- PostgreSQL has officially surpassed mysql. Is this guy too strong!
- Zhongke Panyun - 2022 Guangxi reverse analysis ideas
- 2022 t elevator repair operation certificate examination question bank and simulation examination
- 中科磐云—2022广西逆向解析思路
- flink1.13 sql基础语法(一)DDL、DML
- Nodejs learning document
- Graduation design of small programs -- small programs of food and recipes
- [matlab] matlab simulation - low pass Gaussian white noise
- Programming example of stm32f1 and stm32subeide -74hc595 drives 4-bit 7-segment nixie tube
猜你喜欢

Trie number dictionary tree

抓包整理外篇fiddler———— 会话栏与过滤器
![[技术发展-25]:广播电视网、互联网、电信网、电网四网融合技术](/img/87/e0469e280365ed0261e2b551ebd888.png)
[技术发展-25]:广播电视网、互联网、电信网、电网四网融合技术

Two sides of the evening: tell me about the bloom filter and cuckoo filter? Application scenario? I'm confused..

Trie数-字典树

RSA加密应用常见缺陷的原理与实践

2022 t elevator repair operation certificate examination question bank and simulation examination

基于单片机的太阳能杀虫系统

Fault analysis | mongodb 5.0 reports an error, and the legal instruction solves it

2022广东省赛——编码信息获取 解析flag
随机推荐
Headache delayed double deletion
flink1.13 sql基础语法(二)join操作
[matlab] matlab simulation modulation system - DSB system
Zhongke Panyun - 2022 Guangxi reverse analysis ideas
laravel 中获取刚刚插入的记录的id
中科磐云—D模块解析以及评分标准
拓扑排序和关键路径的图形化显示
COMP1721 Creating Classes
2022 Guangdong provincial competition - code information acquisition and analysis flag
June 2022 summary
模拟小根堆
National vocational college skills competition (secondary vocational group) network security competition questions - Analysis
2022年R2移动式压力容器充装复训题库及答案
The first introduction, stages and methods of defense system breakthrough from the perspective of the red team
Roles of rollup components
【MATLAB】MATLAB 仿真模拟调制系统 — AM 已调信号的功率谱与相干解调
KMP match string
【MATLAB】MATLAB 仿真数字基带传输系统 — 双极性基带信号(第 I 类部分响应波形)的眼图
中職組網絡安全—內存取證
力扣 第 300 场周赛