0

我正在为我的 Windows Phone 应用程序使用 lumia 成像 sdk。我主要使用前置摄像头。也正在使用VideoBrush来捕获图像。当我尝试用前置摄像头拍照时,它工作得很好,但是当图像被捕获时,图像被翻转并保存(如镜面效果)。

<Canvas x:Name="VideoCanvas" Width="480" Height="640" RenderTransformOrigin="0.5,0.5">
    <Canvas.RenderTransform>
        <CompositeTransform ScaleX="-1"/>
    </Canvas.RenderTransform>
    <Canvas.Background>
        <VideoBrush x:Name="videoBrush"/>
    </Canvas.Background>                
</Canvas>

以上Scale="-1"有助于初始化相机,但捕获任务将其存储为镜像。下面是用于捕获图像的代码。难道这个镜面效果可以在这里操纵?

private async Task Capture()
{
        if (!_capturing)
        {
            _capturing = true;

            MemoryStream stream = new MemoryStream();

            CameraCaptureSequence sequence = _dataContext.Device.CreateCaptureSequence(1);
            sequence.Frames[0].CaptureStream = stream.AsOutputStream();

            await _dataContext.Device.PrepareCaptureSequenceAsync(sequence);
            await sequence.StartCaptureAsync();

            _dataContext.ImageStream = stream;

            _capturing = false;
        }
}

或者有什么方法可以翻转和保存捕获的图像(就像LumiaSelfie应用程序一样)?请帮我解决一下这个。提前致谢。

4

1 回答 1

0

在您的 Lumia Imaging SDK 渲染链中,您可以添加一个 Flipfilter:https ://msdn.microsoft.com/en-us/library/lumia.imaging.transforms.flipfilter.aspx

例子:

using (var source = ...)
using (var effect = new FilterEffect(source))
using (var renderer = new JpegRenderer(effect))
{
   effect.Filters = new [] { new FlipFilter(FlipMode.Horizontal) };

   var result = await renderer.RenderAsync();
}
于 2015-07-01T20:40:06.747 回答