本类包含图片解码器信息,但是支持jpg,其他解码器待补充
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
namespace CommonLib.ProcData
{
/// <summary>
/// 图片和byte[]互转
/// 目前仅支持jig格式图片
/// </summary>
public static class BitmapHelper
{
/// <summary>
/// 把byte[]型数据,转换成图片
/// </summary>
/// <param name="Bytes"></param>
/// <returns></returns>
public static Bitmap BytesToBitmap(byte[] Bytes)
{
MemoryStream stream = null;
try
{
stream = new MemoryStream(Bytes);
Image pic = (Image)new Bitmap(stream);
return new Bitmap(pic);
}
catch (ArgumentNullException ex)
{
throw ex;
}
catch (ArgumentException ex)
{
throw ex;
}
finally
{
stream.Close();
}
}
/// <summary>
/// 把图片转成byte[]数据
/// </summary>
/// <param name="bitmap"></param>
/// <returns></returns>
public static byte[] BitmapToBytes(Bitmap bitmap)
{
MemoryStream ms = new MemoryStream(); ;
try
{
ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg");
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 75L); ;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
myEncoderParameters.Param[0] = myEncoderParameter;
bitmap.Save(ms, myImageCodecInfo, myEncoderParameters);
byte[] byteImage = new Byte[ms.Length];
byteImage = ms.ToArray();
return byteImage;
}
catch (ArgumentNullException ex)
{
throw ex;
}
finally
{
ms.Close();
}
}
/// <summary>
/// 获取解码器
/// </summary>
/// <param name="mimeType">图片格式</param>
/// <returns>返回解码器</returns>
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
}
}