当前位置:网站首页>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来保存图片
确实要比之前写的简洁了不少
边栏推荐
- Notepad++--显示相关的配置
- [technology development -25]: integration technology of radio and television network, Internet, telecommunication network and power grid
- Zkevm (12) state proof of appliedzkp
- 我们认为消费互联网发展到最后,依然会局限于互联网行业本身
- Flutter calls Gaode map app to realize location search, route planning and reverse geocoding
- [matlab] matlab simulates digital baseband transmission system - digital baseband transmission system
- Flink1.13 SQL basic syntax (I) DDL, DML
- PostgreSQL has officially surpassed mysql. Is this guy too strong!
- Daily question brushing record (12)
- [matlab] matlab simulates digital bandpass transmission system ask, PSK, FSK system
猜你喜欢

C basic (VII) document operation

2022年T电梯修理操作证考试题库及模拟考试

Daily question brushing record (12)
![[paper summary] zero shot semantic segmentation](/img/78/ee64118d86a7e43ec4d1cb97191fbe.jpg)
[paper summary] zero shot semantic segmentation

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

《Cross-view Transformers for real-time Map-view Semantic Segmentation》论文笔记

Just do it with your hands 7 - * project construction details 2 - hook configuration

Download kicad on Alibaba cloud image station

中职组网络安全—内存取证

NTFS 安全权限
随机推荐
Flink1.13 SQL basic syntax (I) DDL, DML
【MATLAB】MATLAB 仿真模拟调制系统 — SSB 系统
Remote desktop client RDP
National vocational college skills competition (secondary vocational group) network security competition questions - Analysis
2022 t elevator repair operation certificate examination question bank and simulation examination
[QT] timer
The first introduction, stages and methods of defense system breakthrough from the perspective of the red team
Using jsts in esmodule environment
Annex 4: scoring criteria of the attacker docx
Annex I: power of attorney for 202x XXX attack and defense drill
中职组网络安全—内存取证
[matlab] general function of communication signal modulation inverse Fourier transform
Ping port artifact psping
[matlab] general function of communication signal modulation - generation of narrow-band Gaussian white noise
TCP state transition diagram
How to build your own knowledge engine? Community open application
ping端口神器psping
Capturing and sorting out external Fiddler -- Conversation bar and filter
COMP1721 Creating Classes
数据标注是一块肥肉,盯上这块肉的不止中国丨曼孚科技