1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
Imports System.IO
Imports System.ComponentModel
Public Class PictureResizing
Public ProgBarre As ProgressBar
Public UserForm As Form
Public TargetSize As Long
Public WithEvents BCKGW_1 As New BackgroundWorker
Public Sub New()
BCKGW_1.WorkerReportsProgress = True
End Sub
#Region "Background"
Private Sub BCKGW_1_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles BCKGW_1.ProgressChanged
ProgBarre.Value = e.ProgressPercentage
End Sub
Private Sub BCKGW_1_RunWorkerCompleted(sender As System.Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BCKGW_1.RunWorkerCompleted
UserForm.Hide()
End Sub
Private Sub BCKGW_1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BCKGW_1.DoWork
PicturesProcessing(e.Argument)
End Sub
#End Region
Sub Start(ByVal InputList As List(Of String), ByVal TargetSize As Integer, ByVal Userform As Form, ByVal ProgressBar As ProgressBar)
TargetSize = TargetSize
ProgBarre = ProgressBar
Userform = Userform
BCKGW_1.RunWorkerAsync(InputList)
End Sub
Private Sub PicturesProcessing(ListOfPictures As List(Of String))
Dim SizeTarget As Long = TargetSize * 1024 * 1024
'Create paket
Dim TiffPacket As New List(Of String)
Dim JpgPacket As New List(Of String)
For Each Pict As String In ListOfPictures
If Path.GetExtension(Pict) = ".jpg" Then
JpgPacket.Add(Pict)
ElseIf Path.GetExtension(Pict) = ".tif" Then
TiffPacket.Add(Pict)
End If
Next
If TiffPacket.Count > 0 Or JpgPacket.Count > 0 Then
UserForm.Show()
Else
Exit Sub
End If
BCKGW_1.ReportProgress(0)
If TiffPacket.Count > 0 Then
PacketTreatment(TiffPacket, SizeTarget)
End If
BCKGW_1.ReportProgress(50)
If JpgPacket.Count > 0 Then
PacketTreatment(JpgPacket, SizeTarget)
End If
UserForm.Hide()
End Sub
Private Sub PacketTreatment(ByVal Packet As List(Of String), ByVal SizeTarget As Long)
'Weight of packet
Dim SizeOfJpg As Long = GetSizeOfPacket(Packet)
Dim ProgressBarStartValue As Long = ProgBarre.Value
Dim I As Long = 0
If SizeOfJpg > SizeTarget Then
'Size Ratio
Dim CalculatedSizeRatio As Decimal = Math.Round(SizeTarget / SizeOfJpg, 1)
For Each Pict As String In Packet
Dim FileInfo As New FileInfo(Pict)
Dim Maxlength As Long = FileInfo.Length * CalculatedSizeRatio
ResizeImage(Pict, CalculatedSizeRatio, Maxlength)
I = I + 1
BCKGW_1.ReportProgress(ProgressBarStartValue + (I / Packet.Count))
Next
End If
End Sub
End Class |
Partager