A MemoryStream может быть полезным для этого.Вы можете поместить его в метод расширения:
public static class ImageExtensions
{
public static byte[] ToByteArray(this Image image, ImageFormat format)
{
using(MemoryStream ms = new MemoryStream())
{
image.Save(ms, format);
return ms.ToArray();
}
}
}
Вы можете просто использовать его следующим образом:
var image = new Bitmap(10, 10);
// Draw your image
byte[] arr = image.ToByteArray(ImageFormat.Bmp);
Я частично не согласен с ответом prestomanifto относительно ImageConverter. Не используйте ImageConverter. В этом нет ничего технически неправильного, но просто тот факт, что он использует бокс / распаковку из объекта, говорит мне, что это код из старых темных мест платформы .NET, и он не идеален для использования.с обработкой изображений (по крайней мере, излишне конвертировать в байт []), особенно если учесть следующее.
Я посмотрел на код ImageConverter
, используемый в среде .Net, и внутреннеиспользует код, практически идентичный приведенному выше.Он создает новый MemoryStream
, сохраняет Bitmap
в любом формате, в котором он был, когда вы его предоставили, и возвращает массив.Пропустите дополнительные затраты на создание класса ImageConverter
, используя MemoryStream