2016-08-25 4 views
1

lumia imaging sdkを使用して複数のフィルタを適用しようとしましたが、フィルタを1つしか使用できません。私がWindows 8.1で作ったとき、フィルターを使って配列を使うことができましたが、現在は動作しません。私はそれをどのように解決できますか?適用するフィルタの画像に複数のフィルタを適用するLumia SDK UWP

コード:

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; 
} 

答えて

0

私は勝つ8.1のためにそれを作ったとき、私はフィルタを持つ配列を使用していますが、今そのdoesntの仕事することができます。私はそれをどのように解決できますか?

私は非常にあなたが勝つ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(); 
} 
関連する問題