1
我把这个函数形式上网。这将图像的大小减小到50%。 现在我无法返回下面的位图图像窗体函数。返回从功能降低质量后的位图图像
我无法找到任何当前位图图像到50%并返回它的方法。
我是否需要创建一个内存流然后将其保存在那里?
//reduce Image size
public void ReduceImageSize(Bitmap bmp1)
{
var jgpEncoder = GetEncoder(ImageFormat.Jpeg);
// Create an Encoder object based on the GUID
// for the Quality parameter category.
var myEncoder = Encoder.Quality;
// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
var myEncoderParameters = new EncoderParameters(1);
var myEncoderParameter = new EncoderParameter(myEncoder, 50L);
myEncoderParameters.Param[0] = myEncoderParameter;
//rather than saving it should set to the current bitmap image.
//bmp1.Save(@"c:\TestPhoto\TestPhotoQualityFifty.jpg", jgpEncoder, myEncoderParameters);
}
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
var codecs = ImageCodecInfo.GetImageDecoders();
foreach (var codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
}
有什么样的内存问题的可以来,如果我们使用这个功能,如果你把这个功能非常频繁。手段可能是每秒平均大小为20 t 25 kb的图像? – 2015-02-09 06:52:37
由于每次调用后内存流都是'Dispose'd,所以我没有看到任何问题。尽管如此,你仍然需要摆脱旧的形象,现在你可以从一个源中取得两个并保持两个。 – nvoigt 2015-02-09 06:54:06
非常感谢您的解释。 – 2015-02-09 06:59:14