JoeBo747
asked on
Convert Base64 string to jpeg
I recently accepted an answer to a question I submitted on converting a base64 string to a jpeg. The answer was correct when using the supplied base64 that the question participant used, he did suggest that I supply my base64 string. Anyhow when I have attempted to use the code on my string and I get the same black square that I have always returned.
The original question is here.
https://www.experts-exchange.com/questions/28546044/Convert-Base64-string-to-jpeg.html
The answer accepted is here.
The original question is here.
https://www.experts-exchange.com/questions/28546044/Convert-Base64-string-to-jpeg.html
The answer accepted is here.
Imports System.IO
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Try
Dim txt As String = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" ' red dot from wikipedia
If txt.StartsWith("data:") Then
Dim poscomma As Integer = txt.IndexOf(",") + 1
txt = txt.Substring(poscomma, txt.Length - poscomma)
End If
Dim ms As New MemoryStream(Convert.FromBase64String(txt))
Dim bm As Bitmap = Bitmap.FromStream(ms) '<---load bitmap from memory stream
'create new memory stream
Dim jpgms As New MemoryStream()
jpgms.Position = 0
bm.Save(jpgms, System.Drawing.Imaging.ImageFormat.Jpeg) '<---convert to jpeg
PictureBox1.Image = Image.FromStream(jpgms)
'jpgms.toArray() '<--used as data source for sql 2008 image
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
Are you able to do this with my base64 string. which is below?data:image/png;base64,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
ASKER
Ah. I understand now. I got your answer. Had to do a little experimenting. It comes down to the fact that the original base64 string is a transparency image and bitmap does not support transparency, so the bitmap draws it as all black.
Revised code using extension methods:
Produces the following output:
-saige-
Revised code using extension methods:
Imports System.Drawing.Imaging
Imports System.Linq
Imports System.IO
Module Extensions
Private encoders() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()
<System.Runtime.CompilerServices.Extension()> _
Public Function ToJpeg(ByVal ImageIn As Image, Optional ByVal Quality As Integer = 100) As Image
Dim encoder As ImageCodecInfo = (From item As ImageCodecInfo In encoders Where item.MimeType.Equals("image/jpeg") Select item).FirstOrDefault
If Not encoder Is Nothing Then
Dim parameters As EncoderParameters = New EncoderParameters(1)
'Set Quality Parameter
parameters.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality)
'Save to a Memory Stream
Dim ms As New MemoryStream
ImageIn.Save(ms, encoder, parameters)
Return Image.FromStream(ms)
Else
Return Nothing
End If
End Function
<System.Runtime.CompilerServices.Extension()> _
Public Function ToImage(ByVal BitMapIn As Bitmap, ByVal Quality As Integer) As Image
Return Image.FromStream(ToJpegToStream(BitMapIn, Quality))
End Function
<System.Runtime.CompilerServices.Extension()> _
Public Function ToJpegToStream(ByVal BitMapIn As Bitmap, ByVal Quality As Integer, Optional ByVal CompressPct As Integer = -1) As MemoryStream
Dim encoder As ImageCodecInfo = (From item As ImageCodecInfo In encoders Where item.MimeType.Equals("image/jpeg") Select item).FirstOrDefault
If Not encoder Is Nothing Then
Dim parameters As EncoderParameters = New EncoderParameters(1)
'Set Quality Parameter
parameters.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality)
'Save to a Memory Stream
Dim ms As New MemoryStream
BitMapIn.Save(ms, encoder, parameters)
Return ms
Else
Return Nothing
End If
End Function
<System.Runtime.CompilerServices.Extension()> _
Public Function ToBitmap(ByVal StreamIn As MemoryStream) As Bitmap
Dim image As Image = image.FromStream(StreamIn)
Dim bmp As New Bitmap(image, image.Width, image.Height)
Dim graphics As Graphics = graphics.FromImage(bmp)
graphics.FillRectangle(New SolidBrush(Color.White), New Rectangle(0, 0, image.Width, image.Height))
graphics.DrawImage(image, New Rectangle(0, 0, image.Width, image.Height))
Return bmp
End Function
End Module
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Dim txt As String = "data:image/png;base64,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" ' red dot from wikipedia
If txt.StartsWith("data:") Then
Dim poscomma As Integer = txt.IndexOf(",") + 1
txt = txt.Substring(poscomma, txt.Length - poscomma)
End If
Dim ms As New MemoryStream(Convert.FromBase64String(txt))
Dim bmp As Bitmap = ms.ToBitmap()
'create new jpg from bitmap
Dim jpg As Image = bmp.ToImage(100)
PictureBox1.Image = jpg
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
'jpgms.toArray() '<--used as data source for sql 2008 image
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
Produces the following output:
-saige-
ASKER
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Now I have a dilemma! The code from it sage doe's exactly what I asked for in my question, it fixes my bitmap and answers the question thank you. The later arrival of Ark also supplies the answer and I favour this as the fix mainly because of the more lightweight approach. The question is now how to distribute the points it sage has stuck with this but Ark is the one I will implement in my app. Is 50/50 fair? Its my choice but I wish to be fair,
50/50 works for me. Just glad you got your answer...
-saige-
-saige-
50/50 is Ok :)
BTW, why do you need png->jpeg conversion? If resulting array size is a goal, gif is much better(smaller) for signatures.
BTW, why do you need png->jpeg conversion? If resulting array size is a goal, gif is much better(smaller) for signatures.
ASKER
Thanks to both of you for your contribution s, I am glad you agree and I will award the points. The page is being supplied via a third party and I have no control over this
I also have to write the stream to the database in a format again dictated by a third party. I am very pleased by the outcome thank you both once again.
I also have to write the stream to the database in a format again dictated by a third party. I am very pleased by the outcome thank you both once again.
And a red dot when I use his:
-saige-