Voici comment convertir une image en base 64 et en base 64 en image.
il faudra ajouter dans le form1 :
un picturebox et un richtextbox et 3 boutons.
richtextbox à était remplacer par TxtBase64.
ma classe :
Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageEncoders()
Public Function ConvertImageToBase64(ByVal file As Image) As String
Using memoryStream As MemoryStream = New MemoryStream()
file.Save(memoryStream, file.RawFormat)
Dim imageBytes As Byte() = memoryStream.ToArray()
Return Convert.ToBase64String(imageBytes)
End Using
End Function
Public Function ConvertBase64ToImage(ByVal base64String As String) As Image
Dim imageBytes As Byte() = Convert.FromBase64String(base64String)
Using ms As MemoryStream = New MemoryStream(imageBytes, 0, imageBytes.Length)
ms.Write(imageBytes, 0, imageBytes.Length)
Return Image.FromStream(ms, True)
End Using
End Function
Private Sub TxtBase64_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TxtBase64.MouseUp
If e.Button = System.Windows.Forms.MouseButtons.Right Then
Dim contextMenu As New ContextMenuStrip
Dim Item1 As New ToolStripMenuItem("Select All")
Item1.Image = My.Resources.Apply
AddHandler Item1.Click, New EventHandler(AddressOf ALLAction)
contextMenu.Items.Add(Item1)
contextMenu.Items.Add(New ToolStripSeparator)
Dim Item2 As New ToolStripMenuItem("Copier")
Item2.Image = My.Resources.Copy
AddHandler Item2.Click, New EventHandler(AddressOf CopyAction)
contextMenu.Items.Add(Item2)
contextMenu.Items.Add(New ToolStripSeparator)
Dim Item3 As New ToolStripMenuItem("Coller")
Item3.Image = My.Resources.Paste
AddHandler Item3.Click, New EventHandler(AddressOf PasteAction)
contextMenu.Items.Add(Item3)
contextMenu.Items.Add(New ToolStripSeparator)
Dim Item4 As New ToolStripMenuItem("Effacer")
Item4.Image = My.Resources.clear1
AddHandler Item4.Click, New eventhandler(AddressOf ClearAction)
contextMenu.Items.Add(Item4)
TxtBase64.ContextMenuStrip = contextMenu
End If
End Sub
Private Sub ALLAction()
If TxtBase64.Text IsNot Nothing AndAlso TxtBase64.TextLength > 0 Then
TxtBase64.SelectAll()
End If
End Sub
Private Sub CopyAction()
If TxtBase64.SelectedText IsNot Nothing AndAlso TxtBase64.SelectedText <> "" Then
Clipboard.SetText(TxtBase64.SelectedText)
MsgBox("Le code base64 à bien était copier !", MsgBoxStyle.Information, "Copier")
End If
End Sub
Private Sub PasteAction()
If Clipboard.ContainsText() Then
Dim selstart As Integer = TxtBase64.SelectionStart
If TxtBase64.Text IsNot Nothing AndAlso TxtBase64.Text <> "" Then
TxtBase64.Text = TxtBase64.Text.Remove(selstart, TxtBase64.SelectionLength)
End If
Dim clip As String = Clipboard.GetText(TextDataFormat.Text).ToString()
TxtBase64.Text = TxtBase64.Text.Insert(selstart, clip)
TxtBase64.SelectionStart = selstart + clip.Length
End If
End Sub
Private Sub ClearAction()
If TxtBase64.Text IsNot Nothing AndAlso TxtBase64.Text <> "" Then
TxtBase64.Clear()
End If
End Sub
Private Sub GlowButton1_Click(sender As System.Object, e As System.EventArgs) Handles GlowButton1.Click
Dim open As New OpenFileDialog With {
.RestoreDirectory = True,
.SupportMultiDottedExtensions = False,
.Title = "Veuillez selectionner une image !",
.Multiselect = False,
.CheckFileExists = True,
.Filter = String.Format("{0}| All image files ({1})|{1}|All files|*", String.Join("|", codecs.[Select](Function(codec) CStr(String.Format("{0} ({1})|{1}", codec.CodecName, codec.FilenameExtension))).ToArray()), String.Join(";", codecs.[Select](Function(codec) codec.FilenameExtension).ToArray()))}
If open.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim bmp As New Bitmap(open.FileName)
If Not IsNothing(PictureBox1.BackgroundImage) Then PictureBox1.BackgroundImage.Dispose()
PictureBox1.BackgroundImage = bmp
PictureBox1.BackgroundImageLayout = ImageLayout.Stretch
Else : Exit Sub
End If
End Sub
Private Sub GlowButton2_Click(sender As System.Object, e As System.EventArgs) Handles GlowButton2.Click
If PictureBox1.BackgroundImage IsNot Nothing Then
Using image As Image = TryCast(PictureBox1.BackgroundImage.Clone(), Image)
TxtBase64.Clear()
TxtBase64.Text = ConvertImageToBase64(image)
End Using
End If
End Sub
Private Sub GlowButton3_Click(sender As System.Object, e As System.EventArgs) Handles GlowButton3.Click
If TxtBase64.TextLength > 0 Then
PictureBox1.BackgroundImage = ConvertBase64ToImage(TxtBase64.Text)
PictureBox1.BackgroundImageLayout = ImageLayout.Stretch
End If
End Sub
End Class
Aucun commentaire:
Enregistrer un commentaire