2016-04-26 6 views
0

Ich bin neu in der Entwicklung von UWP-Apps und versuche, eine Bildverarbeitungs-App zu erstellen. Ich habe den Code in https://msdn.microsoft.com/en-us/windows/uwp/audio-video-camera/imaging Aber ich habe Ausnahme wie folgt: SoftwareBitmapSource :: SetBitmapAsync unterstützt nur SoftwareBitmap mit positiver Breite/Höhe, bgra8 Pixelformat und vor-multipliziert oder keine Alpha. in Code await source.SetBitmapAsync(sbitmap); Ich frage mich, ob diese Methode wirklich so viele Einschränkungen hat und wenn ja, wenn es eine Alternative gibt, die ich verwenden sollte, hat das die geringsten Einschränkungen. Das Code-Snippet ist wie folgtWarum bekomme ich Fehler wie SetBitmapAsync()?

FileOpenPicker fileOpenPicker = new FileOpenPicker(); 
fileOpenPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; 
fileOpenPicker.FileTypeFilter.Add(".jpg"); 
fileOpenPicker.ViewMode = PickerViewMode.Thumbnail; 

var inputFile = await fileOpenPicker.PickSingleFileAsync(); 
if(inputFile != null) 
{ 
    SoftwareBitmap sbitmap; 
    using (IRandomAccessStream stream = await inputFile.OpenAsync(FileAccessMode.Read)) 
    { 
     BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream); 
     sbitmap = await decoder.GetSoftwareBitmapAsync(); 
    } 
    var source = new SoftwareBitmapSource(); 
    await source.SetBitmapAsync(sbitmap); 
    **Exception--->**imageControl.Source = source; 
} 
+1

So angezeigt zu bekommen, was die Breite/Höhe? ist es bgra8 Pixelformat? Gibt es kein Alpha oder ein vorher multipliziertes? –

+0

@MXD Ich habe gerade einige Standardbilder in der Galerie ausgewählt, keine kann angezeigt werden. Angenommen, diese Funktion sollte normale JPEG-Dateien enthalten. Kennst du eine Substitution für diese Methode? Ich suche nach etwas, das die meisten Formate verarbeiten kann. Vielen Dank! – litaoshen

Antwort

5

Dies ist ein bekanntes Problem. Denn jetzt können Sie diese Abhilfe SoftwareBitmap.Convert unter Verwendung eines Bgra8 vormultipliziert SoftwareBitmap

SoftwareBitmap displayableImage = SoftwareBitmap.Convert(sbitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied); 
+0

Danke! Es hat das Problem gelöst! – litaoshen

Verwandte Themen