Home All Groups Group Topic Archive Search About

Problem creating a Bitmap from an IO.FileStream

Author
10 Dec 2005 8:29 PM
Nathan Sokalski
I am having a problem saving an image with the same name it originally had. I have two similar versions of my code, one in which I close the FileStream used to open the original image before saving, the other in which I close the FileStream afterwards, although both return the same error. Here are the two versions of the code and the errors they each return (NOTE: I rebooted immediately before running each of these versions so that I knew they were run under exactly the same conditions, I think the FileStream gets left open because the error occurs before I can close it):


Here is the one where I save it first:

Dim frogbitmap As Bitmap
Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
frogbitmap = New Bitmap(frogstream)
frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
frogstream.Close()


Invalid parameter used.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: Invalid parameter used.

Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()

Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273




Here is the one where I close the FileStream first:

Dim frogbitmap As Bitmap
Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
frogbitmap = New Bitmap(frogstream)
frogstream.Close()
frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)


Invalid parameter used.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: Invalid parameter used.

Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogstream.Close()
Line 37:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)

Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



I know that Server.MapPath("images/frog2.gif") returns the correct path. I appreciate any help you can offer, thank you all in advance.
--
Nathan Sokalski
njsokal***@hotmail.com
http://www.nathansokalski.com/

Author
11 Dec 2005 8:50 AM
Miha Markic [MVP C#]
Are you sure the stream is valid (contains data,valid picture)?

--
Miha Markic [MVP C#]
RightHand .NET consulting & development www.rthand.com
Blog: http://cs.rthand.com/blogs/blog_with_righthand/

  "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:eny9xhc$FHA.216@TK2MSFTNGP15.phx.gbl...
  I am having a problem saving an image with the same name it originally had. I have two similar versions of my code, one in which I close the FileStream used to open the original image before saving, the other in which I close the FileStream afterwards, although both return the same error. Here are the two versions of the code and the errors they each return (NOTE: I rebooted immediately before running each of these versions so that I knew they were run under exactly the same conditions, I think the FileStream gets left open because the error occurs before I can close it):


  Here is the one where I save it first:

  Dim frogbitmap As Bitmap
  Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
  frogbitmap = New Bitmap(frogstream)
  frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
  frogstream.Close()


  Invalid parameter used.
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

  Exception Details: System.ArgumentException: Invalid parameter used.

  Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()

  Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

  Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273




  Here is the one where I close the FileStream first:

  Dim frogbitmap As Bitmap
  Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
  frogbitmap = New Bitmap(frogstream)
  frogstream.Close()
  frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)


  Invalid parameter used.
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

  Exception Details: System.ArgumentException: Invalid parameter used.

  Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogstream.Close()
Line 37:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)

  Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

  Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



  I know that Server.MapPath("images/frog2.gif") returns the correct path. I appreciate any help you can offer, thank you all in advance.
  --
  Nathan Sokalski
  njsokal***@hotmail.com
  http://www.nathansokalski.com/
Author
12 Dec 2005 12:03 AM
Nathan Sokalski
You're right, the image was invalid (I probably didn't realize that it became invalid because of one of my other errors). I fixed that, and now I get an error during the Save method. Here is the error:

A generic error occurred in GDI+.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

Source Error:

Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()
Line 38: 

Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 36

Stack Trace:

[ExternalException (0x80004005): A generic error occurred in GDI+.]
   System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +581
   System.Drawing.Image.Save(String filename, ImageFormat format) +61
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:36
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



The error is exactly the same regardless of whether the Save or Close methods are called first. Would using a FileStream when saving my image solve the problem? I think the error is somehow related to the fact that I am reading from and writing to the same file, because if I use the same code with two different files, it works perfect. Thanks.
--
Nathan Sokalski
njsokal***@hotmail.com
http://www.nathansokalski.com/
  "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:OaLM4$i$FHA.1032@TK2MSFTNGP11.phx.gbl...
  Are you sure the stream is valid (contains data,valid picture)?

  --
  Miha Markic [MVP C#]
  RightHand .NET consulting & development www.rthand.com
  Blog: http://cs.rthand.com/blogs/blog_with_righthand/

    "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:eny9xhc$FHA.216@TK2MSFTNGP15.phx.gbl...
    I am having a problem saving an image with the same name it originally had. I have two similar versions of my code, one in which I close the FileStream used to open the original image before saving, the other in which I close the FileStream afterwards, although both return the same error. Here are the two versions of the code and the errors they each return (NOTE: I rebooted immediately before running each of these versions so that I knew they were run under exactly the same conditions, I think the FileStream gets left open because the error occurs before I can close it):


    Here is the one where I save it first:

    Dim frogbitmap As Bitmap
    Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
    frogbitmap = New Bitmap(frogstream)
    frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
    frogstream.Close()


    Invalid parameter used.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.ArgumentException: Invalid parameter used.

    Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()

    Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

    Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273




    Here is the one where I close the FileStream first:

    Dim frogbitmap As Bitmap
    Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
    frogbitmap = New Bitmap(frogstream)
    frogstream.Close()
    frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)


    Invalid parameter used.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.ArgumentException: Invalid parameter used.

    Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogstream.Close()
Line 37:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)

    Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

    Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



    I know that Server.MapPath("images/frog2.gif") returns the correct path. I appreciate any help you can offer, thank you all in advance.
    --
    Nathan Sokalski
    njsokal***@hotmail.com
    http://www.nathansokalski.com/
Author
12 Dec 2005 7:32 AM
Miha Markic [MVP C#]
You should Close stream first, that's for sure. And make sure you have write privileges to that file.

--
Miha Markic [MVP C#]
RightHand .NET consulting & development www.rthand.com
Blog: http://cs.rthand.com/blogs/blog_with_righthand/

  "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:uX$Q19q$FHA.264@tk2msftngp13.phx.gbl...
  You're right, the image was invalid (I probably didn't realize that it became invalid because of one of my other errors). I fixed that, and now I get an error during the Save method. Here is the error:

  A generic error occurred in GDI+.
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

  Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

  Source Error:

Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()
Line 38: 

  Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 36

  Stack Trace:

[ExternalException (0x80004005): A generic error occurred in GDI+.]
   System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +581
   System.Drawing.Image.Save(String filename, ImageFormat format) +61
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:36
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



  The error is exactly the same regardless of whether the Save or Close methods are called first. Would using a FileStream when saving my image solve the problem? I think the error is somehow related to the fact that I am reading from and writing to the same file, because if I use the same code with two different files, it works perfect. Thanks.
  --
  Nathan Sokalski
  njsokal***@hotmail.com
  http://www.nathansokalski.com/
    "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:OaLM4$i$FHA.1032@TK2MSFTNGP11.phx.gbl...
    Are you sure the stream is valid (contains data,valid picture)?

    --
    Miha Markic [MVP C#]
    RightHand .NET consulting & development www.rthand.com
    Blog: http://cs.rthand.com/blogs/blog_with_righthand/

      "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:eny9xhc$FHA.216@TK2MSFTNGP15.phx.gbl...
      I am having a problem saving an image with the same name it originally had. I have two similar versions of my code, one in which I close the FileStream used to open the original image before saving, the other in which I close the FileStream afterwards, although both return the same error. Here are the two versions of the code and the errors they each return (NOTE: I rebooted immediately before running each of these versions so that I knew they were run under exactly the same conditions, I think the FileStream gets left open because the error occurs before I can close it):


      Here is the one where I save it first:

      Dim frogbitmap As Bitmap
      Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
      frogbitmap = New Bitmap(frogstream)
      frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
      frogstream.Close()


      Invalid parameter used.
      Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

      Exception Details: System.ArgumentException: Invalid parameter used.

      Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()

      Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

      Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273




      Here is the one where I close the FileStream first:

      Dim frogbitmap As Bitmap
      Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
      frogbitmap = New Bitmap(frogstream)
      frogstream.Close()
      frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)


      Invalid parameter used.
      Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

      Exception Details: System.ArgumentException: Invalid parameter used.

      Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogstream.Close()
Line 37:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)

      Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

      Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



      I know that Server.MapPath("images/frog2.gif") returns the correct path. I appreciate any help you can offer, thank you all in advance.
      --
      Nathan Sokalski
      njsokal***@hotmail.com
      http://www.nathansokalski.com/
Author
12 Dec 2005 9:02 AM
Nathan Sokalski
I'm sure that you have more experience with Streams than me, but here are some tests I did along with their results:


I checked for ASPNET Write privileges, and it does have them, both for the file and the images directory

To test that it was not a problem with Write privileges, I ran the code using images/frog.gif as the source for the FileStream. When I did this, it would only work when I did the Save BEFORE the Close.


Although I have a way to make the code work to "copy" an image, it does not seem to work when trying to "modify" an image (well, my code doesn't really modify it right now, but you get the point). I think that all the Streams involved in the opening and saving end up interfering with each other somehow when saving with the same name, but I'm not sure how, and I'm having trouble figuring it out because I don't have a lot of experience with Streams in VB.NET. At the moment, that is the only idea I have, so although I plan to keep trying, I would appreciate any help that can be given. Thanks.
--
Nathan Sokalski
njsokal***@hotmail.com
http://www.nathansokalski.com/
  "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:%23GNoB5u$FHA.356@TK2MSFTNGP12.phx.gbl...
  You should Close stream first, that's for sure. And make sure you have write privileges to that file.

  --
  Miha Markic [MVP C#]
  RightHand .NET consulting & development www.rthand.com
  Blog: http://cs.rthand.com/blogs/blog_with_righthand/

    "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:uX$Q19q$FHA.264@tk2msftngp13.phx.gbl...
    You're right, the image was invalid (I probably didn't realize that it became invalid because of one of my other errors). I fixed that, and now I get an error during the Save method. Here is the error:

    A generic error occurred in GDI+.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

    Source Error:

Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()
Line 38: 

    Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 36

    Stack Trace:

[ExternalException (0x80004005): A generic error occurred in GDI+.]
   System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +581
   System.Drawing.Image.Save(String filename, ImageFormat format) +61
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:36
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



    The error is exactly the same regardless of whether the Save or Close methods are called first. Would using a FileStream when saving my image solve the problem? I think the error is somehow related to the fact that I am reading from and writing to the same file, because if I use the same code with two different files, it works perfect. Thanks.
    --
    Nathan Sokalski
    njsokal***@hotmail.com
    http://www.nathansokalski.com/
      "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:OaLM4$i$FHA.1032@TK2MSFTNGP11.phx.gbl...
      Are you sure the stream is valid (contains data,valid picture)?

      --
      Miha Markic [MVP C#]
      RightHand .NET consulting & development www.rthand.com
      Blog: http://cs.rthand.com/blogs/blog_with_righthand/

        "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:eny9xhc$FHA.216@TK2MSFTNGP15.phx.gbl...
        I am having a problem saving an image with the same name it originally had. I have two similar versions of my code, one in which I close the FileStream used to open the original image before saving, the other in which I close the FileStream afterwards, although both return the same error. Here are the two versions of the code and the errors they each return (NOTE: I rebooted immediately before running each of these versions so that I knew they were run under exactly the same conditions, I think the FileStream gets left open because the error occurs before I can close it):


        Here is the one where I save it first:

        Dim frogbitmap As Bitmap
        Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
        frogbitmap = New Bitmap(frogstream)
        frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
        frogstream.Close()


        Invalid parameter used.
        Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

        Exception Details: System.ArgumentException: Invalid parameter used.

        Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()

        Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

        Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273




        Here is the one where I close the FileStream first:

        Dim frogbitmap As Bitmap
        Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
        frogbitmap = New Bitmap(frogstream)
        frogstream.Close()
        frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)


        Invalid parameter used.
        Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

        Exception Details: System.ArgumentException: Invalid parameter used.

        Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogstream.Close()
Line 37:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)

        Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

        Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



        I know that Server.MapPath("images/frog2.gif") returns the correct path. I appreciate any help you can offer, thank you all in advance.
        --
        Nathan Sokalski
        njsokal***@hotmail.com
        http://www.nathansokalski.com/
Author
12 Dec 2005 10:27 AM
Miha Markic [MVP C#]
Hi Nathan,

To rule out any asp.net issue I suggest you to try it in a winforms or console application.

--
Miha Markic [MVP C#]
RightHand .NET consulting & development www.rthand.com
Blog: http://cs.rthand.com/blogs/blog_with_righthand/

  "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:%23NrFIrv$FHA.1920@TK2MSFTNGP10.phx.gbl...
  I'm sure that you have more experience with Streams than me, but here are some tests I did along with their results:


  I checked for ASPNET Write privileges, and it does have them, both for the file and the images directory

  To test that it was not a problem with Write privileges, I ran the code using images/frog.gif as the source for the FileStream. When I did this, it would only work when I did the Save BEFORE the Close.


  Although I have a way to make the code work to "copy" an image, it does not seem to work when trying to "modify" an image (well, my code doesn't really modify it right now, but you get the point). I think that all the Streams involved in the opening and saving end up interfering with each other somehow when saving with the same name, but I'm not sure how, and I'm having trouble figuring it out because I don't have a lot of experience with Streams in VB.NET. At the moment, that is the only idea I have, so although I plan to keep trying, I would appreciate any help that can be given. Thanks.
  --
  Nathan Sokalski
  njsokal***@hotmail.com
  http://www.nathansokalski.com/
    "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:%23GNoB5u$FHA.356@TK2MSFTNGP12.phx.gbl...
    You should Close stream first, that's for sure. And make sure you have write privileges to that file.

    --
    Miha Markic [MVP C#]
    RightHand .NET consulting & development www.rthand.com
    Blog: http://cs.rthand.com/blogs/blog_with_righthand/

      "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:uX$Q19q$FHA.264@tk2msftngp13.phx.gbl...
      You're right, the image was invalid (I probably didn't realize that it became invalid because of one of my other errors). I fixed that, and now I get an error during the Save method. Here is the error:

      A generic error occurred in GDI+.
      Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

      Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

      Source Error:

Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()
Line 38: 

      Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 36

      Stack Trace:

[ExternalException (0x80004005): A generic error occurred in GDI+.]
   System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +581
   System.Drawing.Image.Save(String filename, ImageFormat format) +61
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:36
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



      The error is exactly the same regardless of whether the Save or Close methods are called first. Would using a FileStream when saving my image solve the problem? I think the error is somehow related to the fact that I am reading from and writing to the same file, because if I use the same code with two different files, it works perfect. Thanks.
      --
      Nathan Sokalski
      njsokal***@hotmail.com
      http://www.nathansokalski.com/
        "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:OaLM4$i$FHA.1032@TK2MSFTNGP11.phx.gbl...
        Are you sure the stream is valid (contains data,valid picture)?

        --
        Miha Markic [MVP C#]
        RightHand .NET consulting & development www.rthand.com
        Blog: http://cs.rthand.com/blogs/blog_with_righthand/

          "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:eny9xhc$FHA.216@TK2MSFTNGP15.phx.gbl...
          I am having a problem saving an image with the same name it originally had. I have two similar versions of my code, one in which I close the FileStream used to open the original image before saving, the other in which I close the FileStream afterwards, although both return the same error. Here are the two versions of the code and the errors they each return (NOTE: I rebooted immediately before running each of these versions so that I knew they were run under exactly the same conditions, I think the FileStream gets left open because the error occurs before I can close it):


          Here is the one where I save it first:

          Dim frogbitmap As Bitmap
          Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
          frogbitmap = New Bitmap(frogstream)
          frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
          frogstream.Close()


          Invalid parameter used.
          Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

          Exception Details: System.ArgumentException: Invalid parameter used.

          Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()

          Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

          Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273




          Here is the one where I close the FileStream first:

          Dim frogbitmap As Bitmap
          Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
          frogbitmap = New Bitmap(frogstream)
          frogstream.Close()
          frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)


          Invalid parameter used.
          Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

          Exception Details: System.ArgumentException: Invalid parameter used.

          Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogstream.Close()
Line 37:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)

          Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

          Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



          I know that Server.MapPath("images/frog2.gif") returns the correct path. I appreciate any help you can offer, thank you all in advance.
          --
          Nathan Sokalski
          njsokal***@hotmail.com
          http://www.nathansokalski.com/
Author
12 Dec 2005 11:27 PM
Nathan Sokalski
I not familiar with creating console applications. As for winforms, just to make sure, is that basically a Windows application written using ..NET? I have written Windows applications using VB (that was before .NET even existed), so I want to make sure that I am understanding what you are suggesting.
--
Nathan Sokalski
njsokal***@hotmail.com
http://www.nathansokalski.com/
  "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:uNA10aw$FHA.360@TK2MSFTNGP09.phx.gbl...
  Hi Nathan,

  To rule out any asp.net issue I suggest you to try it in a winforms or console application.

  --
  Miha Markic [MVP C#]
  RightHand .NET consulting & development www.rthand.com
  Blog: http://cs.rthand.com/blogs/blog_with_righthand/

    "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:%23NrFIrv$FHA.1920@TK2MSFTNGP10.phx.gbl...
    I'm sure that you have more experience with Streams than me, but here are some tests I did along with their results:


    I checked for ASPNET Write privileges, and it does have them, both for the file and the images directory

    To test that it was not a problem with Write privileges, I ran the code using images/frog.gif as the source for the FileStream. When I did this, it would only work when I did the Save BEFORE the Close.


    Although I have a way to make the code work to "copy" an image, it does not seem to work when trying to "modify" an image (well, my code doesn't really modify it right now, but you get the point). I think that all the Streams involved in the opening and saving end up interfering with each other somehow when saving with the same name, but I'm not sure how, and I'm having trouble figuring it out because I don't have a lot of experience with Streams in VB.NET. At the moment, that is the only idea I have, so although I plan to keep trying, I would appreciate any help that can be given. Thanks.
    --
    Nathan Sokalski
    njsokal***@hotmail.com
    http://www.nathansokalski.com/
      "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:%23GNoB5u$FHA.356@TK2MSFTNGP12.phx.gbl...
      You should Close stream first, that's for sure. And make sure you have write privileges to that file.

      --
      Miha Markic [MVP C#]
      RightHand .NET consulting & development www.rthand.com
      Blog: http://cs.rthand.com/blogs/blog_with_righthand/

        "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:uX$Q19q$FHA.264@tk2msftngp13.phx.gbl...
        You're right, the image was invalid (I probably didn't realize that it became invalid because of one of my other errors). I fixed that, and now I get an error during the Save method. Here is the error:

        A generic error occurred in GDI+.
        Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

        Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

        Source Error:

Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()
Line 38: 

        Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 36

        Stack Trace:

[ExternalException (0x80004005): A generic error occurred in GDI+.]
   System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +581
   System.Drawing.Image.Save(String filename, ImageFormat format) +61
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:36
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



        The error is exactly the same regardless of whether the Save or Close methods are called first. Would using a FileStream when saving my image solve the problem? I think the error is somehow related to the fact that I am reading from and writing to the same file, because if I use the same code with two different files, it works perfect. Thanks.
        --
        Nathan Sokalski
        njsokal***@hotmail.com
        http://www.nathansokalski.com/
          "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:OaLM4$i$FHA.1032@TK2MSFTNGP11.phx.gbl...
          Are you sure the stream is valid (contains data,valid picture)?

          --
          Miha Markic [MVP C#]
          RightHand .NET consulting & development www.rthand.com
          Blog: http://cs.rthand.com/blogs/blog_with_righthand/

            "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:eny9xhc$FHA.216@TK2MSFTNGP15.phx.gbl...
            I am having a problem saving an image with the same name it originally had. I have two similar versions of my code, one in which I close the FileStream used to open the original image before saving, the other in which I close the FileStream afterwards, although both return the same error. Here are the two versions of the code and the errors they each return (NOTE: I rebooted immediately before running each of these versions so that I knew they were run under exactly the same conditions, I think the FileStream gets left open because the error occurs before I can close it):


            Here is the one where I save it first:

            Dim frogbitmap As Bitmap
            Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
            frogbitmap = New Bitmap(frogstream)
            frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
            frogstream.Close()


            Invalid parameter used.
            Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

            Exception Details: System.ArgumentException: Invalid parameter used.

            Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()

            Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

            Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273




            Here is the one where I close the FileStream first:

            Dim frogbitmap As Bitmap
            Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
            frogbitmap = New Bitmap(frogstream)
            frogstream.Close()
            frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)


            Invalid parameter used.
            Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

            Exception Details: System.ArgumentException: Invalid parameter used.

            Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogstream.Close()
Line 37:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)

            Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

            Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



            I know that Server.MapPath("images/frog2.gif") returns the correct path. I appreciate any help you can offer, thank you all in advance.
            --
            Nathan Sokalski
            njsokal***@hotmail.com
            http://www.nathansokalski.com/
Author
13 Dec 2005 9:45 AM
Miha Markic [MVP C#]
"Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:ugYfaO3$FHA.1568@TK2MSFTNGP10.phx.gbl...
  I not familiar with creating console applications. As for winforms, just to make sure, is that basically a Windows application written using ..NET?

  Yes.

  I have written Windows applications using VB (that was before .NET even existed), so I want to make sure that I am understanding what you are suggesting.
  --
  Nathan Sokalski
  njsokal***@hotmail.com
  http://www.nathansokalski.com/
    "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:uNA10aw$FHA.360@TK2MSFTNGP09.phx.gbl...
    Hi Nathan,

    To rule out any asp.net issue I suggest you to try it in a winforms or console application.

    --
    Miha Markic [MVP C#]
    RightHand .NET consulting & development www.rthand.com
    Blog: http://cs.rthand.com/blogs/blog_with_righthand/

      "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:%23NrFIrv$FHA.1920@TK2MSFTNGP10.phx.gbl...
      I'm sure that you have more experience with Streams than me, but here are some tests I did along with their results:


      I checked for ASPNET Write privileges, and it does have them, both for the file and the images directory

      To test that it was not a problem with Write privileges, I ran the code using images/frog.gif as the source for the FileStream. When I did this, it would only work when I did the Save BEFORE the Close.


      Although I have a way to make the code work to "copy" an image, it does not seem to work when trying to "modify" an image (well, my code doesn't really modify it right now, but you get the point). I think that all the Streams involved in the opening and saving end up interfering with each other somehow when saving with the same name, but I'm not sure how, and I'm having trouble figuring it out because I don't have a lot of experience with Streams in VB.NET. At the moment, that is the only idea I have, so although I plan to keep trying, I would appreciate any help that can be given. Thanks.
      --
      Nathan Sokalski
      njsokal***@hotmail.com
      http://www.nathansokalski.com/
        "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:%23GNoB5u$FHA.356@TK2MSFTNGP12.phx.gbl...
        You should Close stream first, that's for sure. And make sure you have write privileges to that file.

        --
        Miha Markic [MVP C#]
        RightHand .NET consulting & development www.rthand.com
        Blog: http://cs.rthand.com/blogs/blog_with_righthand/

          "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:uX$Q19q$FHA.264@tk2msftngp13.phx.gbl...
          You're right, the image was invalid (I probably didn't realize that it became invalid because of one of my other errors). I fixed that, and now I get an error during the Save method. Here is the error:

          A generic error occurred in GDI+.
          Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

          Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

          Source Error:

Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()
Line 38: 

          Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 36

          Stack Trace:

[ExternalException (0x80004005): A generic error occurred in GDI+.]
   System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +581
   System.Drawing.Image.Save(String filename, ImageFormat format) +61
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:36
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



          The error is exactly the same regardless of whether the Save or Close methods are called first. Would using a FileStream when saving my image solve the problem? I think the error is somehow related to the fact that I am reading from and writing to the same file, because if I use the same code with two different files, it works perfect. Thanks.
          --
          Nathan Sokalski
          njsokal***@hotmail.com
          http://www.nathansokalski.com/
            "Miha Markic [MVP C#]" <miha at rthand com> wrote in message news:OaLM4$i$FHA.1032@TK2MSFTNGP11.phx.gbl...
            Are you sure the stream is valid (contains data,valid picture)?

            --
            Miha Markic [MVP C#]
            RightHand .NET consulting & development www.rthand.com
            Blog: http://cs.rthand.com/blogs/blog_with_righthand/

              "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:eny9xhc$FHA.216@TK2MSFTNGP15.phx.gbl...
              I am having a problem saving an image with the same name it originally had. I have two similar versions of my code, one in which I close the FileStream used to open the original image before saving, the other in which I close the FileStream afterwards, although both return the same error. Here are the two versions of the code and the errors they each return (NOTE: I rebooted immediately before running each of these versions so that I knew they were run under exactly the same conditions, I think the FileStream gets left open because the error occurs before I can close it):


              Here is the one where I save it first:

              Dim frogbitmap As Bitmap
              Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
              frogbitmap = New Bitmap(frogstream)
              frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
              frogstream.Close()


              Invalid parameter used.
              Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

              Exception Details: System.ArgumentException: Invalid parameter used.

              Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)
Line 37:         frogstream.Close()

              Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

              Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273




              Here is the one where I close the FileStream first:

              Dim frogbitmap As Bitmap
              Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
              frogbitmap = New Bitmap(frogstream)
              frogstream.Close()
              frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)


              Invalid parameter used.
              Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

              Exception Details: System.ArgumentException: Invalid parameter used.

              Source Error:

Line 33:         Dim frogbitmap As Bitmap
Line 34:         Dim frogstream As New IO.FileStream(Server.MapPath("images/frog2.gif"), IO.FileMode.Open)
Line 35:         frogbitmap = New Bitmap(frogstream)
Line 36:         frogstream.Close()
Line 37:         frogbitmap.Save(Server.MapPath("images/frog2.gif"), Imaging.ImageFormat.Gif)

              Source File: C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb    Line: 35

              Stack Trace:

[ArgumentException: Invalid parameter used.]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   WebApplication1.ImageNoCache.btnRotate_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\WebApplication1\ImageNoCache.aspx.vb:35
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1273



              I know that Server.MapPath("images/frog2.gif") returns the correct path. I appreciate any help you can offer, thank you all in advance.
              --
              Nathan Sokalski
              njsokal***@hotmail.com
              http://www.nathansokalski.com/

AddThis Social Bookmark Button