Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 964
  • Last Modified:

Upload-Resize-Crop Image In SQL Databse in Binary Format in ASP.Net using C#

I want to upload the Multiple images at a time(on button click)(using flash uploder or any other) in SQL databse where the images saves in binary format.(Please not that I am not storing the images path in database) and also i want the images should be resized and crop before upload.
<email deleted>

Thanks!
Vikas.
0
SCALERCODE
Asked:
SCALERCODE
  • 2
1 Solution
 
Jens FiedererTest Developer/ValidatorCommented:
I should probably leave this to the admins, but please note that solutions are supposed to be posted right here on Experts Exchange - that way they can help more than one person.

You might want to be specific about the type of database you are using (do you mean SQLServer database?)
0
 
oobaylyCommented:
The page that handles the file upload post can get the InputStream for each file from the Request.Files object.

A method like this will take the inputStream and generate a byte array that contains the thumbnail data. It's then a simple matter of inserting the binary data into your database
    private byte[] GetThumbBytes(Stream inputStream, Size maxSize) {
      Bitmap original = new Bitmap(inputStream);
      double scale = Math.Min(maxSize.Width / original.Width, maxSize.Height, original.Height);
      Bitmap thumb = new Bitmap(original, (int)(scale * original.Width), (int)(scale * original.Height));
 
      // Save the thumb to a memorystream
      MemoryStream ms = new MemoryStream();
      thumb.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
      byte[] buff = ms.ToArray();
 
      original.Dispose();
      thumb.Dispose();
      ms.Dispose();
 
      return buff;
    }

Open in new window

0
 
oobaylyCommented:
Minor mistake, the scale is calcualated incorrectly. The numerators have to be cast as double, else scale ends up being to the nearest integer which isn't ideal.
    private byte[] GetThumbBytes(Stream inputStream, Size maxSize) {
      Bitmap original = new Bitmap(inputStream);
      double scale = Math.Min((double)maxSize.Width / original.Width, (double)maxSize.Height / original.Height);
      Bitmap thumb = new Bitmap(original, (int)(scale * original.Width), (int)(scale * original.Height));
 
      // Save the thumb to a memorystream
      MemoryStream ms = new MemoryStream();
      thumb.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
      byte[] buff = ms.ToArray();
 
      original.Dispose();
      thumb.Dispose();
      ms.Dispose();
 
      return buff;
    }

Open in new window

0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now