c# – 如何在Windows Phone 8.1中使用正确的旋转,宽高比拍摄照片? (使用MediaCapture)

您是否可以使用MediaCapture元素提供有关如何拍摄和保存照片的实际工作示例.我曾尝试在MSDN中寻找实际的解决方案,但这些解释或代码都没有以简单的方式描述过程.

我需要拍照并将其保存到我的库(我需要为此显示正确的预览),但是现在它旋转了90度而我无法调整它.我已经尝试设置视频预览的旋转,它适用于预览,但是当我这样做时,宽高比全部错误,保存的图像不正确.

第9频道的例子也很糟糕.我只需要一个简单的实现……

我使用运行时应用程序而不是Windows Phone 8.1的Silverlight应用程序.

解决方法

我遇到了同样的问题,SetRecordRotation对我不起作用.我找到了解决方法 – 拍照并旋转图像,效果很好.我使用这样的方法

private async void CapturePhoto()
    {
        string photoPath = string.Empty;
        ImageEncodingProperties format = ImageEncodingProperties.CreateJpeg();

        using (var imagestream = new InMemoryRandomAccessstream())
        {
            await MediaCapture.CapturePhotoToStreamAsync(format,imagestream);

            BitmapDecoder dec = await BitmapDecoder.CreateAsync(imagestream);
            BitmapEncoder enc = await BitmapEncoder.CreateForTranscodingAsync(imagestream,dec);

            enc.BitmapTransform.Rotation = BitmapRotation.Clockwise90degrees;

            await enc.FlushAsync();

            StorageFolder folder = ApplicationData.Current.LocalFolder;
            StorageFile capturefile = await folder.CreateFileAsync("photo.jpg",CreationCollisionoption.GenerateUniqueName);
            photoPath = capturefile.Name;

            using (var fileStream = await capturefile.OpenAsync(FileAccessMode.ReadWrite))
            {
                try
                {  
                    await RandomAccessstream.copyAsync(imagestream,fileStream);
                }
                catch {}
            }
        } 
    }

修改文章如何在marco Siccardi的Windows Phone 8.1 Runtime应用程序中捕获照片的代码示例
http://dotnet.dzone.com/articles/how-capture-photo-your-windows-0

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...