Użyłem kodu z http://www.codeproject.com/Tips/552141/Csharp-Image-resize-convert-and-save, aby programowo zmienić rozmiar obrazów. Jednak ten projekt korzysta z bibliotek System.Drawing
, które nie są dostępne dla aplikacji systemu Windows 10.Jak kopiować i zmieniać rozmiar obrazu w systemie Windows 10 UWP
Próbowałem przy użyciu klasy BitmapImage
od Windows.UI.Xaml.Media.Imaging
zamiast, ale nie wydaje się, aby zaoferować funkcjonalność, która została znaleziona w System.Drawing
..
Czy ktoś miał szczęście mogąc zmienić rozmiar (skalowanie w dół) w obrazy Windows 10? Moja aplikacja będzie przetwarzać obrazy z wielu źródeł, w różnych formatach/rozmiarach i próbuję zmienić rozmiar rzeczywistych obrazów, aby zaoszczędzić miejsce, zamiast po prostu pozwolić aplikacji dopasować ją do Image
, w której jest wyświetlana.
EDIT
Mam zmodyfikowany kod z powyższego linku i mają hack który działa dla mojego konkretnych potrzeb. Oto ona:
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;
}
ten sposób wydaje się działać, ale idealnie zamiast modyfikowania oryginalnego BitmapImage
, Chciałbym utworzyć nowy/kopię do modyfikowania i powrotu zamiast.
Tytuł wprowadzający w błąd, OP. Masz sposób zmiany rozmiaru obrazu, co naprawdę chcesz zrobić, to utworzyć kopię oryginalnego obrazu, zmienić rozmiar kopii, a następnie zwrócić kopię. –
@BrianDriscoll Wysłałem pytanie przed edycją. Edycja dodała kod do zmiany rozmiaru oryginalnego obrazu. Powiedziałbym to jako odpowiedź, ale jeszcze nie było wystarczająco długo. Ale podoba mi się nowy tytuł. Dzięki. –
Czy jesteś w stanie po prostu utworzyć stałą obrazu? Czy własność prywatna może po prostu odwoływać się do oryginalnej kopii obrazu i korzystać z tej samej funkcji? – aguertin