У меня проблема с размещением изображения с уменьшенным масштабом. Изображение растрировано, и я не знаю, как найти его правильно.UWP - поврежденное изображение повреждено
Можно ли разместить изображение без потери качества?
Код:
public async Task<BitmapImage> BitmapTransform(string filePath, uint width)
{
StorageFile file = await StorageFile.GetFileFromPathAsync(filePath);
if (file == null)
return null;
// create a stream from the file and decode the image
var fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(fileStream);
// create a new stream and encoder for the new image
InMemoryRandomAccessStream ras = new InMemoryRandomAccessStream();
BitmapEncoder enc = await BitmapEncoder.CreateForTranscodingAsync(ras, decoder);
double ration =
enc.BitmapTransform.ScaledWidth = width;
enc.BitmapTransform.ScaledHeight = (uint)(((double)decoder.PixelHeight/(double)decoder.PixelWidth) * (double)width);
// write out to the stream
try
{
await enc.FlushAsync();
}
catch (Exception ex)
{
string s = ex.ToString();
}
// render the stream to the screen
BitmapImage bImg = new BitmapImage();
bImg.SetSource(ras);
return bImg;
}
Вы не можете масштабировать изображение, а не масштабировать изображение одновременно. Масштабирование изображения будет ** всегда ** влиять на качество изображения, и единственным способом не повлиять на качество изображения является не масштабирование изображения. Это должно быть немедленно очевидным. – IInspectable
, но он не является высококлассным до более чем 100%, он изменяет размер до 50% в зависимости от разрешения экрана. – DiDinko
Масштабирование изображения вниз означает потерю информации. Это приводит к ухудшению качества изображения. Если бы это было не так, мы бы просто сжимали все наши файлы, чтобы занять 0 байт дискового пространства, сохраняя при этом всю информацию. Я не знаю, почему это не очевидно для вас. – IInspectable