Sunday, June 12, 2011

Parameter is not valid. Asp.net GDI exception

I was getting this exception while working with the GDI images in asp.net.
My requirement was to upload the image from client then resize it and display.

The code was working fine on local development machine, but on production server it was throwing “Parameter is not valid” exception.

The general cause of this is that non-availability of resources required to generate a valid image file.

In my case the reason was that the destination folder was having read-only permissions, which was causing the code to hault while saving the processed image back to server.

For the resources I read during this issue, I found out some more reasons, these can be following:
1) Invalid source image path passed to the Drawing/Image/Bitmap object.
2) Invalid destination image path passed to the Drawing/Image/Bitmap object.
3) Corrupted/incomplete byte array.
4) Disposing of Source object before completing generation of new Image.
5) Folder write permissions while saving the new file.

Generic function to display images on webpage asp.net

Hi fellas,

I am writing this post after a long time. This new year I am back at blogging to help the software developers in writing better code .

Ever need of a generic/common function to display the images on website?
In normal practice, whenever we need to show an image, we used to directly write
Image.Src= “/userfiles/abc.jpg”;

This can be painful sometimes if your folder path gets changed, in that case you need to replace the folder (userfiles) everywhere.

Smart and better way is to create a common function that will display images. What you need to do is to call this method every time.


Method:

public string ShowImage(string ImageName)
{
string ReturnVal = string.Empty;

if (File.Exists(System.Web.HttpContext.Current.Server.MapPath(“~/userfiles/” + ImageName)) == true)
{
ReturnVal = VirtualPathUtility.ToAbsolute(“~/userfiles/” + ImageName);
}
else
{
ReturnVal = VirtualPathUtility.ToAbsolute(“~/Images/ImageNotAvailable.jpg”);
}

return ReturnVal;
}


Usage:

imgThumbnail.ImageUrl = ShowImage(“abc.jpg”);


Explanation:

This method, takes a string parameter as image name to display. Then it checks that if the particular image exists or not.
If the image exists on the specified path then it returns the image name with full path (userfiles/abc.jpg) else it returns the alternate image path, which is imageNotAvailable.jpg.

This way if the image is not founded on server then user will be shown a imageNotAvailable.jpg

Thats it for now.