Я использовал код с http://www.codeproject.com/Tips/552141/Csharp-Image-resize-convert-and-save для программного изменения размера изображений. Однако в этом проекте используются библиотеки System.Drawing
, недоступные для приложений Windows 10.
Вместо этого я попытался использовать класс BitmapImage
из Windows.UI.Xaml.Media.Imaging
, но, похоже, он не предлагает функциональности, которая была найдена в System.Drawing
..
Удалось ли кому-нибудь изменить размер (уменьшить) изображения в Windows 10? Мое приложение будет обрабатывать изображения из нескольких источников в разных форматах/размерах, и я пытаюсь изменить размер фактических изображений, чтобы сэкономить место, а не просто позволить приложению изменить его размер, чтобы он соответствовал Image
, в котором он отображается.
ИЗМЕНИТЬ
Я изменил код из вышеупомянутой ссылки, и у меня есть хак, который работает для моей конкретной потребности. Вот:
public static BitmapImage ResizedImage(BitmapImage sourceImage, int maxWidth, int maxHeight)
{
var origHeight = sourceImage.PixelHeight;
var origWidth = sourceImage.PixelWidth;
var ratioX = maxWidth/(float) origWidth;
var ratioY = maxHeight/(float) origHeight;
var ratio = Math.Min(ratioX, ratioY);
var newHeight = (int) (origHeight * ratio);
var newWidth = (int) (origWidth * ratio);
sourceImage.DecodePixelWidth = newWidth;
sourceImage.DecodePixelHeight = newHeight;
return sourceImage;
}
Кажется, этот способ работает, но в идеале вместо того, чтобы изменять исходный BitmapImage
, я хотел бы создать его новую/копию для изменения и возврата.
BitmapImage
, а не изменять оригинал. - person dub stylee   schedule 16.03.2016