title: A Generic error occurred in GDI+ in Bitmap.Save method
body: <p>I am working on to upload and save a thumbnail copy of that image in a thumbnail folder.</p>
  
  <p>I am using following link:</p>
  
  <p><a href="http://weblogs.asp.net/markmcdonnell/archive/2008/03/09/resize-image-before-uploading-to-server.aspx" rel="noreferrer">http://weblogs.asp.net/markmcdonnell/archive/2008/03/09/resize-image-before-uploading-to-server.aspx</a></p>
  
  <p>but  </p>
  
  <pre><code>newBMP.Save(directory + "tn_" + filename);   
  </code></pre>
  
  <p>is causing exception "A generic error occurred in GDI+."</p>
  
  <p>I have tried to give permission on folder, also tried to use a new separate bmp object when saving.</p>
  
  <p><strong>Edit:</strong> </p>
  
  <pre><code>    protected void ResizeAndSave(PropBannerImage objPropBannerImage)
      {
          // Create a bitmap of the content of the fileUpload control in memory
          Bitmap originalBMP = new Bitmap(fuImage.FileContent);
  
          // Calculate the new image dimensions
          int origWidth = originalBMP.Width;
          int origHeight = originalBMP.Height;
          int sngRatio = origWidth / origHeight;
          int thumbWidth = 100;
          int thumbHeight = thumbWidth / sngRatio;
  
          int bannerWidth = 100;
          int bannerHeight = bannerWidth / sngRatio;
  
          // Create a new bitmap which will hold the previous resized bitmap
          Bitmap thumbBMP = new Bitmap(originalBMP, thumbWidth, thumbHeight);
          Bitmap bannerBMP = new Bitmap(originalBMP, bannerWidth, bannerHeight);
  
          // Create a graphic based on the new bitmap
          Graphics oGraphics = Graphics.FromImage(thumbBMP);
          // Set the properties for the new graphic file
          oGraphics.SmoothingMode = SmoothingMode.AntiAlias; oGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
  
          // Draw the new graphic based on the resized bitmap
          oGraphics.DrawImage(originalBMP, 0, 0, thumbWidth, thumbHeight);
  
          Bitmap newBitmap = new Bitmap(thumbBMP);
          thumbBMP.Dispose();
          thumbBMP = null;
  
          // Save the new graphic file to the server
          newBitmap.Save("~/image/thumbs/" + "t" + objPropBannerImage.ImageId, ImageFormat.Jpeg);
  
          oGraphics = Graphics.FromImage(bannerBMP);
          // Set the properties for the new graphic file
          oGraphics.SmoothingMode = SmoothingMode.AntiAlias; oGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
  
          // Draw the new graphic based on the resized bitmap
          oGraphics.DrawImage(originalBMP, 0, 0, bannerWidth, bannerHeight);
          // Save the new graphic file to the server
          bannerBMP.Save("~/image/" + objPropBannerImage.ImageId + ".jpg");
  
  
          // Once finished with the bitmap objects, we deallocate them.
          originalBMP.Dispose();
  
          bannerBMP.Dispose();
          oGraphics.Dispose();
      }
  </code></pre>