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

J » Je pense que vous pouvez utiliser une propriété ici puisque vous voulez que la propriété accepte au tableau byte et renvoie une image bitmap. Une propriété doit obtenir et définir le même type de données. Vous devez faire deux méthodes pour cela. Un pour l'image -> tableau d'octets et un pour le tableau d'octets-> image. –

Répondre

1

J'utilise habituellement ces deux méthodes pour convertir une image en un tableau d'octets, et vice-versa, par exemple lors du transfert d'une image à un service web, et le récupérer à nouveau:

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

BTW, je pense que vous fuyez un bitmap dans ImageToByteArray. Vous devez disposer le bitmap temporaire après l'avoir enregistré. – N8allan

Questions connexes