试了很多方法,找了很多资料都不成功。
其中最明显的方法是调用函数 Bitmap.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams);
但不知道为什么想把颜色深度改为4位总是不成功,在这帖下简易代码,图片保存代码为简写,如编译不过请自行修改。
public static void Convert(Image img)
{
ImageCodecInfo CodecInfo = GetImageCodecInfo(ImageFormat.Bmp);
int count = 0;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
System.Drawing.Imaging.Encoder myEncoder3 = System.Drawing.Imaging.Encoder.ColorDepth;
EncoderParameter myep3 = new EncoderParameter(myEncoder3, 4);
myEncoderParameters.Param[0] = myep3;
}
using (FileStream ms = new FileStream("e:\\a.bmp"))
{
img.Save(ms, CodecInfo, myEncoderParameters);
myEncoderParameters.Dispose();
return ms.Write();
}
}
public static ImageCodecInfo GetImageCodecInfo(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
ImageCodecInfo CodecInfo = null;
foreach (ImageCodecInfo item in codecs)
{
if (item.FormatID == format.Guid)
{
CodecInfo = item;
break;
}
}
return CodecInfo;
}
因此要人决定自已编写转换方法,如下&#