I read the answer for the same question and did whatever is asked to do. I also gave the write permission to the folder for current user as mentioned in one of the previous answer but still getting this error. So Please can anyone provide me the specific answer what is to be done? This is my code
protected void Page_Load(object sender, EventArgs e)
{
//get all the files in a directory
string[] files = Directory.GetFiles(@"D:\Naved\BasicDotNet\Images");
//combine them into one image
System.Drawing.Bitmap stitchedImage = Combine(files);
//save the new image
stitchedImage.Save(@"D:\Naved\BasicDotNet\Images", System.Drawing.Imaging.ImageFormat.Jpeg);//Error:-A generic error occurred in GDI+
}
public static System.Drawing.Bitmap Combine(string[] files)
{
//read all images into memory
List<System.Drawing.Bitmap> images = new List<System.Drawing.Bitmap>();
System.Drawing.Bitmap finalImage = null;
try
{
int width = 0;
int height = 0;
foreach (string image in files)
{
//create a Bitmap from the file and add it to the list
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(image);
//update the size of the final bitmap
width += bitmap.Width;
height = bitmap.Height > height ? bitmap.Height : height;
images.Add(bitmap);
}
//create a bitmap to hold the combined image
finalImage = new System.Drawing.Bitmap(width, height);
//get a graphics object from the image so we can draw on it
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(finalImage))
{
//set background color
g.Clear(System.Drawing.Color.Black);
//go through each image and draw it on the final image
int offset = 0;
foreach (System.Drawing.Bitmap image in images)
{
g.DrawImage(image,
new System.Drawing.Rectangle(offset, 0, image.Width, image.Height));
offset += image.Width;
}
}
return finalImage;
}
catch (Exception ex)
{
if (finalImage != null)
finalImage.Dispose();
throw ex;
}
finally
{
//clean up memory
foreach (System.Drawing.Bitmap image in images)
{
image.Dispose();
}
}
}
}
Try
stitchedImage.Save(@"D:\Naved\BasicDotNet\Images\stitchedImage.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
instead of
stitchedImage.Save(@"D:\Naved\BasicDotNet\Images", System.Drawing.Imaging.ImageFormat.Jpeg);
The first argument to Image.Save (String, ImageFormat)
is the file name to which to save, not the directory to which to save. Previously you had done
string[] files = Directory.GetFiles(@"D:\Naved\BasicDotNet\Images");
So @"D:\Naved\BasicDotNet\Images"
must be a directory, not a file.
(Incidentally, I suggest saving the stitched image to a different directory; otherwise, every time you run your code you'll stitch the previous stitch together with the previous contents.)