![](/img/trans.png)
[英]How to use Blend Effect from Lumia Imaging SDK in UWP windows 10 for Mobile?
[英]Apply several filters to picture Lumia SDK UWP
我嘗試使用Lumia Imaging SDK對圖片應用多個濾鏡,但我只能使用1個濾鏡。 當我為Win 8.1制作它時,我可以使用一系列過濾器,但現在它不起作用。 我怎么解決它?
應用過濾器代碼:
public async Task<bool> ApplyEffectAsync(StorageFile file)
{
WriteableBitmap temp = new WriteableBitmap(1280, 720);
temp = new WriteableBitmap(1280, 720);
FileStream = await File.OpenAsync(FileAccessMode.Read);
temp.SetSource(FileStream);
OriginalPicture = temp;
FileStream.Seek(0);
original.Invalidate();
((IImageConsumer) Effect).Source = new RandomAccessStreamImageSource(FileStream);
M_renderer = new WriteableBitmapRenderer((IImageProvider)Effect, original);
FilteringPicture = await M_renderer.RenderAsync();
filtering.Invalidate();
return true;
}
當我為Win 8.1制作它時,我可以使用帶過濾器的數組,但現在它不起作用。 我怎么解決它?
我不太明白你在Win 8.1應用程序中是如何做到這一點的,但在UWP應用程序中,如果要對圖像應用多個效果,可以將最后渲染的效果源設置為另一個過濾器的新源。 僅舉例來說:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="500" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image x:Name="originalimg" Grid.Column="0" />
<SwapChainPanel x:Name="SwapChainPanelTarget" Grid.Column="1" />
<Image x:Name="MutipleFilter" Grid.Column="2" />
</Grid>
<Button Content="Click Me" Click="Button_Click" Grid.Row="1" HorizontalAlignment="Center" />
</Grid>
代碼背后:
private async void Button_Click(object sender, RoutedEventArgs e)
{
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/test.jpg"));
//show original image in the Image control
IRandomAccessStream inputStream1 = await file.OpenReadAsync();
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(inputStream1);
originalimg.Source = bitmap;
//use the blureffect
IRandomAccessStream inputStream = await file.OpenReadAsync();
BlurEffect blureffect = new BlurEffect();
inputStream.Seek(0);
blureffect.Source = new Lumia.Imaging.RandomAccessStreamImageSource(inputStream);
var render = new SwapChainPanelRenderer(blureffect, SwapChainPanelTarget);
await render.RenderAsync();
//multiple filters
WriteableBitmap temp = new WriteableBitmap(1280, 720);
LomoEffect lemoeffect = new LomoEffect();
lemoeffect.Source = render.Source; //here, use the last rendered source as the new source of another effect
var l_render = new WriteableBitmapRenderer(lemoeffect, temp);
MutipleFilter.Source = await l_render.RenderAsync();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.