2010-11-30 3 views
0
public byte[] PictureByteArray 
     { 
      get 
      { 
       //get a TypeConverter object for converting Bitmap to bytes 
       TypeConverter converter = TypeDescriptor.GetConverter(typeof(Bitmap)); 
       byte[] byteArr = (byte[])converter.ConvertTo(source, typeof(byte[])); 
       return byteArr; 
      } 
      set 
      { 
       source = new Bitmap(new MemoryStream(value)); 
      } 
     } 


    System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding(); 
      s = enc.GetString(bytes); 
+1

Я не» t думаю, что вы можете использовать свойство здесь, так как вы хотите, чтобы свойство принималось в массиве байтов и возвращало растровое изображение. Свойство должно получить и установить один и тот же тип данных. Для этого вам нужно сделать два метода. Один для массива image-> byte и один для байтового массива-> изображение. – 2010-11-30 08:49:49

ответ

1

Я обычно использую эти два способа для преобразования изображения в массив байтов, и обратно, например, при переносе изображения на веб-службы, и извлечения его обратно:

public static byte[] ImageToByteArray(System.Drawing.Image imageIn) { 
    MemoryStream ms = new MemoryStream(); 
    Bitmap image = new Bitmap(imageIn); 
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 
    return ms.ToArray(); 
} 

public static Image ByteArrayToImage(byte[] byteArray) { 
    MemoryStream ms = new MemoryStream(byteArray); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage; 
} 
+0

Кстати, я думаю, что вы просачиваете растровое изображение в ImageToByteArray. После сохранения временного растрового изображения вы должны сохранить его. – N8allan 2015-06-02 18:47:04