Solved

Image to memory stream

Posted on 2006-11-28
7
270 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Revamp Your Training Process

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action.

 
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

Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

Question has a verified solution.

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

Suggested Solutions

Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
It’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …

733 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