Я пытаюсь сохранить WritableBitmap и убедиться, что размер получаемого файла меньше определенного размера. Мой код выглядит следующим образом
//Fetch Image from file
BitmapImage bitmap = new BitmapImage(new Uri("YourImage.jpg", UriKind.Relative));
WriteableBitmap writableBitmapImage = new WriteableBitmap(bitmap);
//initialize variables and values
MemoryStream stream;
JpegBitmapEncoder encoder;
byte[] result;
int quality = 100;
//loop through save process, checking file size and changing quality
while (selected.maxFileSize < result.Length && quality > 1)
{
encoder = new JpegBitmapEncoder();
stream = new MemoryStream();
encoder.QualityLevel = quality;
encoder.Frames.Add(BitmapFrame.Create(
ReplaceTransparency(writableBitmapImage, Colors.White))
);
encoder.Save(stream);
result = stream.GetBuffer();
if (quality > 5) quality += -5;
else quality--;
}
Когда я запускаю этот код, я не вижу никаких изменений размера файла от начальной точки QualityLevel = 100;
до QualityLevel = 10;
.
На QualityLevel = 5;
Я вижу большое изменение в размере файла.
Есть ли способ контролировать размер файла более детально?