Rechercher dans ce blog

mercredi 29 décembre 2021

Convertir Image en base64 et base64 en image

 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 :

Public Class Form1

    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