PC Review


Reply
Thread Tools Rate Thread

Convert System.Drawing.Image to FileStream

 
 
Toby Mathews
Guest
Posts: n/a
 
      22nd Dec 2003
Hi,

In an ASP.Net application I want to convert open create a FileStream
object from a System.Drawing.Image - is this possible? I create an instance
of an Image object using the FromFile method, then use the GetThumbnailImage
method to create a second Image. This second one is the one I want to get a
FileStream from, so that I can then use its Handle to use Response.WriteFile
to output the thumbnail on my ASP.Net page.

Any help would be much appreciated - I realise I may not even be going
about this in the most appropriate way! Thanks in advance,

Toby Mathews


 
Reply With Quote
 
 
 
 
Toby Mathews
Guest
Posts: n/a
 
      22nd Dec 2003
Apologies, first line should read:

"In an ASP.Net application I want to create a FileStream..."

"Toby Mathews" <NO-tobym-(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi,
>
> In an ASP.Net application I want to convert open create a FileStream
> object from a System.Drawing.Image - is this possible? I create an

instance
> of an Image object using the FromFile method, then use the

GetThumbnailImage
> method to create a second Image. This second one is the one I want to get

a
> FileStream from, so that I can then use its Handle to use

Response.WriteFile
> to output the thumbnail on my ASP.Net page.
>
> Any help would be much appreciated - I realise I may not even be going
> about this in the most appropriate way! Thanks in advance,
>
> Toby Mathews
>
>



 
Reply With Quote
 
Cor
Guest
Posts: n/a
 
      22nd Dec 2003
Hi Toby,

I made a sample that works. In a nice way.
It is not a thumbnail, but that you can make using the memorystream.
It is imposible to put an image from a stream direct on a webpage.
A webpage can only show an IMG.
If you want to use a thumbnail, you first needs to convert that there is a
special class for that.

I hope this is something you need.


\\\For the database the image database sample from the Resource kit is used.
\\\It needs 2 forms with on form1 a listbox, a picturebox and a label and
on form2 nothing
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim conn As New SqlClient.SqlConnection _
("Server=localhost;" & "DataBase=Northwind;" & _
"Integrated Security=SSPI")
Dim cmd As New SqlClient.SqlCommand("SELECT FileName, PictureID
FROM Picture", conn)
Dim da As New SqlClient.SqlDataAdapter(cmd)
Dim dsPictures As New DataSet
da.Fill(dsPictures)
Me.Image1.Visible = False
ListBox1.AutoPostBack = True
Try
ListBox1.DataSource = dsPictures.Tables(0)
ListBox1.DataTextField = "FileName"
ListBox1.DataValueField = "PictureID"
ListBox1.DataBind()
Catch sqlExc As SqlClient.SqlException
Me.Label1.Text = "Database Error"
Catch exc As Exception
Me.Label1.Text = "Datbase Connection Failed!"
End Try
conn.Close()
End If
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender _
As System.Object, ByVal e As System.EventArgs) Handles
ListBox1.SelectedIndexChanged
Session.Item("img") = ListBox1.SelectedItem.Value
Image1.Visible = True
Image1.ImageUrl = "http://localhost/WebApplication1/WebForm2.aspx"
End Sub
///
\\\
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim conn As New SqlClient.SqlConnection("Server=localhost;" & _
"DataBase=Northwind;" & "Integrated Security=SSPI")
Dim sqlstr As String = _
String.Format("SELECT Picture FROM Picture WHERE (PictureID = {0})",
CInt(Session.Item("img")))
Dim cmd As New SqlClient.SqlCommand(sqlstr, conn)
conn.Open()
Dim rdr As SqlClient.SqlDataReader = cmd.ExecuteReader()
rdr.Read()
Response.BinaryWrite(CType(rdr.Item("Picture"), Byte()))
rdr.Close()
conn.Close()
End Sub
///
I hope this helps a little bit?

Cor








> >
> > In an ASP.Net application I want to convert open create a FileStream
> > object from a System.Drawing.Image - is this possible? I create an

> instance
> > of an Image object using the FromFile method, then use the

> GetThumbnailImage
> > method to create a second Image. This second one is the one I want to

get
> a
> > FileStream from, so that I can then use its Handle to use

> Response.WriteFile
> > to output the thumbnail on my ASP.Net page.
> >
> > Any help would be much appreciated - I realise I may not even be going
> > about this in the most appropriate way! Thanks in advance,
> >
> > Toby Mathews
> >
> >

>
>



 
Reply With Quote
 
Cor
Guest
Posts: n/a
 
      22nd Dec 2003
Hi Toby
>
> I made a sample that works in a nice way.


> It is not a thumbnail, but that you can make using the memorystream.

Skip that row above was an error I forgot to delete.

> It is imposible to put an image from a stream direct on a webpage.
> A webpage can only show an IMG.
> If you want to use a thumbnail, you first needs to convert that there is a
> special class for that.
>

Cor


 
Reply With Quote
 
Toby Mathews
Guest
Posts: n/a
 
      22nd Dec 2003
Cor,

Thanks for the reply, I don't think that's quite what I'm after and I
can't see how to adapt it. Here's some example code to try to show what it
is I want to do (I'm using C# but I can understand your VB):

// First get my original image.
System.Drawing.Image.GetThumbnailImageAbort myCallback = new
System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
System.Drawing.Image img = System.Drawing.Image.FromFile(@"c:\img.jpg");

// Then make the thumbnail
img = img.GetThumbnailImage(100, 100, myCallback, IntPtr.Zero);

// Then somehow make the FileStream and get a reference to the FileHandle.
FileStream MyFileStream = ... // don't know what to do here?
IntPtr FileHandle = MyFileStream.Handle;

// Finally write this.
Response.WriteFile(FileHandle, 0, MyFileStream.Length);

Does that make sense?

Thanks for your help so far, and apologies if I have missed something in
your reply.

Toby

"Cor" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi Toby,
>
> I made a sample that works. In a nice way.
> It is not a thumbnail, but that you can make using the memorystream.
> It is imposible to put an image from a stream direct on a webpage.
> A webpage can only show an IMG.
> If you want to use a thumbnail, you first needs to convert that there is a
> special class for that.
>
> I hope this is something you need.
>
>
> \\\For the database the image database sample from the Resource kit is

used.
> \\\It needs 2 forms with on form1 a listbox, a picturebox and a label and
> on form2 nothing
> Private Sub Page_Load(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles MyBase.Load
> If Not IsPostBack Then
> Dim conn As New SqlClient.SqlConnection _
> ("Server=localhost;" & "DataBase=Northwind;" & _
> "Integrated Security=SSPI")
> Dim cmd As New SqlClient.SqlCommand("SELECT FileName,

PictureID
> FROM Picture", conn)
> Dim da As New SqlClient.SqlDataAdapter(cmd)
> Dim dsPictures As New DataSet
> da.Fill(dsPictures)
> Me.Image1.Visible = False
> ListBox1.AutoPostBack = True
> Try
> ListBox1.DataSource = dsPictures.Tables(0)
> ListBox1.DataTextField = "FileName"
> ListBox1.DataValueField = "PictureID"
> ListBox1.DataBind()
> Catch sqlExc As SqlClient.SqlException
> Me.Label1.Text = "Database Error"
> Catch exc As Exception
> Me.Label1.Text = "Datbase Connection Failed!"
> End Try
> conn.Close()
> End If
> End Sub
> Private Sub ListBox1_SelectedIndexChanged(ByVal sender _
> As System.Object, ByVal e As System.EventArgs) Handles
> ListBox1.SelectedIndexChanged
> Session.Item("img") = ListBox1.SelectedItem.Value
> Image1.Visible = True
> Image1.ImageUrl = "http://localhost/WebApplication1/WebForm2.aspx"
> End Sub
> ///
> \\\
> Private Sub Page_Load(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles MyBase.Load
> Dim conn As New SqlClient.SqlConnection("Server=localhost;" & _
> "DataBase=Northwind;" & "Integrated Security=SSPI")
> Dim sqlstr As String = _
> String.Format("SELECT Picture FROM Picture WHERE (PictureID =

{0})",
> CInt(Session.Item("img")))
> Dim cmd As New SqlClient.SqlCommand(sqlstr, conn)
> conn.Open()
> Dim rdr As SqlClient.SqlDataReader = cmd.ExecuteReader()
> rdr.Read()
> Response.BinaryWrite(CType(rdr.Item("Picture"), Byte()))
> rdr.Close()
> conn.Close()
> End Sub
> ///
> I hope this helps a little bit?
>
> Cor
>
>
>
>
>
>
>
>
> > >
> > > In an ASP.Net application I want to convert open create a FileStream
> > > object from a System.Drawing.Image - is this possible? I create an

> > instance
> > > of an Image object using the FromFile method, then use the

> > GetThumbnailImage
> > > method to create a second Image. This second one is the one I want to

> get
> > a
> > > FileStream from, so that I can then use its Handle to use

> > Response.WriteFile
> > > to output the thumbnail on my ASP.Net page.
> > >
> > > Any help would be much appreciated - I realise I may not even be

going
> > > about this in the most appropriate way! Thanks in advance,
> > >
> > > Toby Mathews
> > >
> > >

> >
> >

>
>



 
Reply With Quote
 
Cor
Guest
Posts: n/a
 
      22nd Dec 2003
Hi Toby,

I changed it so it works now with a thumbnail.
That hard it cannot be to change it in C#

The changes are all on the second form.
What is the trick.
It is posible to send a bytearray to a webpage and that will create a form.
But that image is immidiatly also the page.
Not nice such a page in the left uperside of the form and no text.

The trick is to make such a page and than use that page "the URL" as the
imput for your your real image on page. That page is my form1.

I will try to make it as C# also but not today or tomorrow I think.

I hope this does help you

Cor

\\\\
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim conn As New SqlClient.SqlConnection("Server=localhost;" & _
"DataBase=Northwind;" & "Integrated Security=SSPI")
Dim sqlstr As String = _
String.Format("SELECT Picture FROM Picture WHERE (PictureID = {0})",
CInt(Session.Item("img")))
Dim cmd As New SqlClient.SqlCommand(sqlstr, conn)
conn.Open()
Dim rdr As SqlClient.SqlDataReader = cmd.ExecuteReader()
rdr.Read()
Dim arrImage() As Byte
arrImage = (CType(rdr.Item("Picture"), Byte()))
Dim ms1 As New System.IO.MemoryStream(arrImage)
Dim origimage As System.drawing.Image
origimage = System.Drawing.Image.FromStream(ms1)
Dim PThumbnail As System.drawing.Image
PThumbnail = origimage.GetThumbnailImage(100, 100, Nothing, New
IntPtr)
Dim ms2 As New System.IO.MemoryStream
PThumbnail.Save(ms2, Imaging.ImageFormat.Bmp)
arrImage = ms2.GetBuffer
Response.BinaryWrite(arrImage)
rdr.Close()
conn.Close()
End Sub
///




 
Reply With Quote
 
Toby Mathews
Guest
Posts: n/a
 
      22nd Dec 2003
Cor,

Thanks a lot, that's exactly what I needed! I was almost doing the right
thing, but I was using the FileStream rather than MemoryhStream. Thanks
again,

Toby

"Cor" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi Toby,
>
> I changed it so it works now with a thumbnail.
> That hard it cannot be to change it in C#
>
> The changes are all on the second form.
> What is the trick.
> It is posible to send a bytearray to a webpage and that will create a

form.
> But that image is immidiatly also the page.
> Not nice such a page in the left uperside of the form and no text.
>
> The trick is to make such a page and than use that page "the URL" as the
> imput for your your real image on page. That page is my form1.
>
> I will try to make it as C# also but not today or tomorrow I think.
>
> I hope this does help you
>
> Cor
>
> \\\\
> Private Sub Page_Load(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles MyBase.Load
> Dim conn As New SqlClient.SqlConnection("Server=localhost;" & _
> "DataBase=Northwind;" & "Integrated Security=SSPI")
> Dim sqlstr As String = _
> String.Format("SELECT Picture FROM Picture WHERE (PictureID =

{0})",
> CInt(Session.Item("img")))
> Dim cmd As New SqlClient.SqlCommand(sqlstr, conn)
> conn.Open()
> Dim rdr As SqlClient.SqlDataReader = cmd.ExecuteReader()
> rdr.Read()
> Dim arrImage() As Byte
> arrImage = (CType(rdr.Item("Picture"), Byte()))
> Dim ms1 As New System.IO.MemoryStream(arrImage)
> Dim origimage As System.drawing.Image
> origimage = System.Drawing.Image.FromStream(ms1)
> Dim PThumbnail As System.drawing.Image
> PThumbnail = origimage.GetThumbnailImage(100, 100, Nothing, New
> IntPtr)
> Dim ms2 As New System.IO.MemoryStream
> PThumbnail.Save(ms2, Imaging.ImageFormat.Bmp)
> arrImage = ms2.GetBuffer
> Response.BinaryWrite(arrImage)
> rdr.Close()
> conn.Close()
> End Sub
> ///
>
>
>
>



 
Reply With Quote
 
vMike
Guest
Posts: n/a
 
      23rd Dec 2003
I think this is what you are looking for. mynewimage is your
system.drawing.image. You may have to change the format. You also might want
to add Response.ContentType = "image/jpeg" before you output the stream.

mynewimage.Save(Response.OutputStream, ImageFormat.Jpeg)

"Toby Mathews" <NO-tobym-(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi,
>
> In an ASP.Net application I want to convert open create a FileStream
> object from a System.Drawing.Image - is this possible? I create an

instance
> of an Image object using the FromFile method, then use the

GetThumbnailImage
> method to create a second Image. This second one is the one I want to get

a
> FileStream from, so that I can then use its Handle to use

Response.WriteFile
> to output the thumbnail on my ASP.Net page.
>
> Any help would be much appreciated - I realise I may not even be going
> about this in the most appropriate way! Thanks in advance,
>
> Toby Mathews
>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Mirror / rotate image ( System.Drawing.Graphics / System.Drawing.Drawing2D.Matrix) Eduard Witteveen Microsoft C# .NET 3 17th Jul 2006 01:26 PM
system.drawing.image to system.web.ui.webcontrols.image byrd48 Microsoft ASP .NET 0 6th Jul 2006 05:02 AM
System.drawing.image =?Utf-8?B?YmVub2l0?= Microsoft ASP .NET 5 23rd Jan 2006 01:00 PM
Convert Byte() to System.Drawing.Image? JackBlack Microsoft VB .NET 3 20th Jan 2006 10:02 PM
how to convert httpPostedFile to and Drawing.Image (save a thumbnail) NATO24 Microsoft ASP .NET 2 26th Mar 2005 03:52 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 11:18 AM.