using System.Drawing; using System.Drawing.Imaging; using System.IO; namespace Infrastructure.Extensions { public static class BitmapExtensions { public static byte[] ToBytes(this Bitmap bitmap) { using (var stream = new MemoryStream()) { bitmap.Save(stream, ImageFormat.Jpeg); return stream.ToArray(); } } public static byte[] ToJpeg(this Bitmap bitmap, long quality = 50) { var jpgEncoder = GetEncoder(ImageFormat.Jpeg); var parameters = new EncoderParameters(1); parameters.Param[0] = new EncoderParameter(Encoder.Quality, quality); using (var stream = new MemoryStream()) { bitmap.Save(stream, jpgEncoder, parameters); return stream.ToArray(); } } private static ImageCodecInfo GetEncoder(ImageFormat format) { ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); foreach (ImageCodecInfo codec in codecs) { if (codec.FormatID == format.Guid) { return codec; } } return null; } } }