Leah
Leah

Reputation: 2607

Parameter is not valid error when creating new bitmap

I am displaying images on my page and then attempting to find the current height of the images in order to vertically position them. I am doing this by creating a new bitmap and then getting the height of the bitmap, as follows:

Dim sampleImg As New System.Drawing.Bitmap(Server.MapPath(String.Format("/Uploads/Products/Images/w100h100/{0}", e.Item.DataItem("Filename"))))
Dim imgHeight As Integer = sampleImg.Height

When I run this on my local machine, all works fine. However, I have recently uploaded the site so far to my development server and when I run the same code from there, I get this error message:

Parameter is not valid

I have been searching forums to try to find a solution but I have ended up a bit unsure where else to look because the file definitely exists on the development server and the code works fine on my local machine. The server I am using is a VPS and I am quite a beginner with working with servers so I don't know if there is anything I haven't set up on there which is stopping it from working?

Whilst trying to find a solution, I have also tried the following code but I get a System.IO.FileNotFoundException error message:

Dim sampleImg As System.Drawing.Image = System.Drawing.Image.FromFile(Server.MapPath(String.Format("/Uploads/Products/Images/w100h100/{0}", e.Item.DataItem("Filename"))))

I am wondering if anyone can help me find a solution to this, or alternatively is there a different method to acheiving the same end?

All help is very much appreciated. Thanks.

Upvotes: 1

Views: 3689

Answers (3)

Wolfwyrd
Wolfwyrd

Reputation: 15916

It may be a file permissions issue, you need to ensure that the IUSR account for your site has read access to the image file. To do this -

R-click the file, Properties, Select the "Security" tab - you will have a list of users who have access to the file. A quick check is to add "Everyone" with read priviliges. To keep it locked to your ASP.Net instance only you should start IIS Manager, r-click your app pool and the Identity is the user your app runs under.

Upvotes: 2

Curtis
Curtis

Reputation: 103358

If you are running through IIS it may be that the file type isn't set up in the available MIME types for the site.

http://technet.microsoft.com/en-us/library/bb742440.aspx

With IIS7 there is a module for each Site called "MIME Types". Check whether the File Extension is in the list, and if not, add it with the appropriate MIME Type (list of mime types in link above)

Upvotes: 1

KV Prajapati
KV Prajapati

Reputation: 94645

I think you have to use ~ root operator to resolve the path issue.

Dim sampleImg As System.Drawing.Image = 
          System.Drawing.Image.FromFile(Server.MapPath(
          String.Format("~/Uploads/Products/Images/w100h100/{0}", 
          e.Item.DataItem("Filename"))))

OR the specified file is not a valid image file.

Upvotes: 0

Related Questions