Solved

Image to memory stream

Posted on 2006-11-28
7
266 Views
Last Modified: 2010-04-23
I have a function i'm using to generate an md5 off an image

 Dim MD5ImageStream As New IO.MemoryStream(ayfile)

ayfile represents "capacity as integer"

I was using Dim ayFile() As Byte = ConnectStreamToByteArray(oStream)
before. Now I'm using


   Dim oImage As Image = Image.FromStream(oStream)

What would I pass to md5imagestream in place of ayfile?
0
Comment
Question by:JPERKS1985
  • 4
  • 3
7 Comments
 
LVL 16

Expert Comment

by:Hillwaaa
ID: 18033988
Hi JPERKS1985,

try something like this (from: http://www.dotnet247.com/247reference/msgs/22/112124.aspx):

        Dim myImage As Image
        Dim ms As New IO.MemoryStream
        myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp)
        Dim b(ms.Length - 1) As Byte
        ms.Position = 0
        ms.Read(b, 0, ms.Length)

Cheers,
Hillwaaa
0
 
LVL 1

Author Comment

by:JPERKS1985
ID: 18034062
That doesn't seem to work. Thanks for your help thus far. The stream is created this way

  Dim oStream As Stream = oResponse.GetResponseStream

I must be able to pass the finished product to

  Private Function MD5_Hash(ByVal Fs As Stream) As String
            Dim md5 As New MD5CryptoServiceProvider
            Dim hash() As Byte

            Try

                hash = md5.ComputeHash(Fs)

                Fs.Close()
                md5.Clear()

                Return BitConverter.ToString(hash).Replace("-", "").ToUpper
            Catch ex As Exception
                'MsgBox(ex.Message.ToString)

                Return Nothing
            End Try

0
 
LVL 16

Accepted Solution

by:
Hillwaaa earned 500 total points
ID: 18034096
Ok, not sure if I'm confused now, but i thought you wanted a replacement for ayfile, so something like this:

Dim oImage As Image = Image.FromStream(oStream)
Dim MD5ImageStream As New IO.MemoryStream
oImage.Save(MD5ImageStream, System.Drawing.Imaging.ImageFormat.Bmp)
Dim hash As String = MD5_Hash(MD5ImageStream)

Is that what you wanted?
0
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
LVL 1

Author Comment

by:JPERKS1985
ID: 18034121
sorry I'm starying to confuse myself,

I used to use




        Private Function ConnectStreamToByteArray(ByVal poStream As Stream) As Byte()

            Dim obj45 As Object = New Object

            SyncLock obj45

                Dim ayRet() As Byte
                Dim icnt As Integer
                Try
                    Do
                        ReDim Preserve ayRet(icnt)
                        '* Read the Byte into the array
                        ayRet(icnt) = poStream.ReadByte
                        '* Increment
                        icnt = (icnt + 1)
                    Loop
                Catch ex As Exception
                    '* Do nothing. The Stream is Completed
                End Try
                '* Return the Byte Array

                Return ayRet


            End SyncLock


        End Function

To convert ostream into the proper format, however that was slowing down the thread. Now I need an alternative to either use ostream to convert to the proper formatfrom either oimage or ostream or even a modficatio to the hash function so I can pass the oimage directly.
0
 
LVL 16

Expert Comment

by:Hillwaaa
ID: 18034161
What happens when you try the following (I'm assuming that you already have oImage as an Image - and you might need to change the image format to the appropriate format):

Dim MD5ImageStream As New IO.MemoryStream
oImage.Save(MD5ImageStream, System.Drawing.Imaging.ImageFormat.Bmp)
Dim hash As String = MD5_Hash(MD5ImageStream)
Messagebox.show(hash)

0
 
LVL 1

Author Comment

by:JPERKS1985
ID: 18034190
You got it man , I get a good hash (thats not the default blank hash). Thanks for the help id buy you a drink if we wern't online. haha
0
 
LVL 16

Expert Comment

by:Hillwaaa
ID: 18034201
lol - no worries!  buy it anyway and drink it for me :)
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

805 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question