C# programlama dilinde özellikle FTP ile dosya transferleri yaparken sıklıkla dosyaları byte cinsine dönüştürmek ya da byte cinsinden Image sınıfından ürettiğimiz bir nesneye dönüştürmemiz gerekir. Bir diğer olası durum da Stream sınıfı ile çalışıyorsanız ve Stream sınıfından ürettiğiniz bir nesnenin Write metodunu kullanacaksanız. Dolayısıyla Image ile ByteArray arasında sık sık dönüşüm yapmak gerekir.
Image ile byte dizisi arasında dönüşüm yapmanın birden çok yolu bulunmaktadır. Bu yazıda kendi adıma en sık kullandığım MemoryStream örneğini vereceğim.
Image türündeki bir nesneyi byte array'e dönüştürmek için:
public byte[] imgByteArrayDonustur(Image image)
{
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, image.RawFormat);
return ms.ToArray();
}
}
Şimdi de tam tersi olarak byte array türündeki bir nesneyi image'e dönüştürmek için:
public Image byteArrayImageDonustur(byte[] byteDizisi)
{
using (MemoryStream ms = new MemoryStream(byteDizisi))
{
return Image.FromStream(ms);
}
}
Not: ImageConverter kullanmak isterseniz de şu iki metodu kullanabilirsiniz:
public static byte[] imgByteDonustur(Image rsmGirdi)
{
ImageConverter rsmDon = new ImageConverter();
return (byte[])rsmDon.ConvertTo(rsmGirdi, typeof(byte[]));
}