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