bitmap.save重载之间的区别

时间:2014-03-13 18:33:18

标签: c# .net bitmap

我正在研究将位图对象保存到内存流的不同方法,我不确定应该选择哪种方法。

这两个特别引起我兴趣的是:

1)

Bitmap.Save(Stream, ImageFormat)

2)

Bitmap.Save(Stream, ImageCodecInfo, EncoderParameters)

方案如下:

我有一个方法,它接收格式为.bmp的图像,在我执行调整大小逻辑后,我将这个新调整大小的位图对象保存回jpg格式的内存流。我已经使用了这两种方法,它们都给了我编码的jpg等价物。

方法1的逻辑

Bitmap srcBitmap = new Bitmap(m_testImage);
//perform resize
var imageStream = new MemoryStream();
srcBitmap.Save(imageStream, ImageFormat.Jpeg);
imageStream.Position = 0L;

方法2的逻辑

Bitmap srcBitmap = new Bitmap(m_testImage);
myjpegEncoder = ImageCodecInfo.GetImageDecoders().FirstOrDefault(codec => codec.FormatID == ImageFormat.Jpeg.Guid);
encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80L);
var imageStream = new MemoryStream();
srcBitmap.Save(imageStream, myjpegEncoder, encoderParams);
imageStream.Position = 0L;

这两种方法有哪些主要区别?

msdn:http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.save(v=vs.110).aspx

2 个答案:

答案 0 :(得分:1)

使用方法2保存时,可以更改质量,颜色深度或压缩等。

答案 1 :(得分:-1)

第一个是JPEG的预定义方法。 另一个是更通用的版本。例如对于未来的图像格式,如第一个样本中那样尚未直接提供