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 т 25 кб? –
Поскольку поток памяти «Dispose» после каждого вызова, я не вижу никаких проблем с ним. Вам все равно нужно избавиться от старого изображения, хотя сейчас вы делаете два из одного источника и сохраняете оба. – nvoigt
Большое спасибо за ваше объяснение. –