2

I'm developing a project that includes a picture gallery managing by admin panel. I want to show thumbnail images to admin in the admin panel which is active and will be showing to end user.

Ok. I'm storing images into db in two parameters: ImageData(byte[]), ImageMimeType. So I want to store thumbnail versions of pictures at the when first time store images. I have found some example code to resize and manipulate pictures in this adress link text :

private static Image cropImage(Image img, Rectangle cropArea)
{
   Bitmap bmpImage = new Bitmap(img);
   Bitmap bmpCrop = bmpImage.Clone(cropArea,
   bmpImage.PixelFormat);
   return (Image)(bmpCrop);
}

this function taking a image as a parameter. But I have ImageData(byte[]).

So, How do I convert my byte array to Image and Image to byte array?

beratuslu
  • 1,101
  • 3
  • 14
  • 27

4 Answers4

4

Create the image from a stream:

private static Image cropImage(byte[] imgArray, Rectangle cropArea)
{
   MemoryStream ms = new MemoryStream(imgArray);
   Image img = Image.FromStream(ms);
   Bitmap bmpImage = new Bitmap(img);
   Bitmap bmpCrop = bmpImage.Clone(cropArea,
   bmpImage.PixelFormat);
   return (Image)(bmpCrop);
}
Ian
  • 33,605
  • 26
  • 118
  • 198
2
public Image ByteArrayToImage(byte[] byteArrayIn)
{
     MemoryStream ms = new MemoryStream(byteArrayIn);
     Image returnImage = Image.FromStream(ms);
     return returnImage;
}

Found here which also has a lot of other examples

Iain Ward
  • 9,850
  • 5
  • 34
  • 41
  • 1
    You should probably reference the webpage if you're going to directly lift this example... – Ian Aug 04 '10 at 11:48
2

Image from byte array

public Image byteArrayToImage(byte[] byteArray)
{
     MemoryStream ms = new MemoryStream(byteArray);
     return Image.FromStream(ms);
}

Image To byte array

public byte[] imageToByteArray(Image image)
{
 MemoryStream ms = new MemoryStream();
 return image.Save(ms,ImageFormat.Jpeg).ToArray();
}
0

Somthing like this?

Bitmap bmpImage = new Bitmap(img);
MemoryStream stream = new MemoryStream();
try {
    bmpImage.Save(stream, bmpImage.RawFormat);
    byte[] bytes = stream.ToArray();
}
finally {
    stream.Close();
    ((IDisposable)stream).Dispose();
}

Also you may create MemoryStream from byte[] and then load Image from that stream.

osprey
  • 29
  • 2