c# - 如何在 Windows Phone 8.1 中以正确的旋转、宽高比拍摄照片? (使用媒体捕捉)

标签 c# camera windows-store-apps windows-phone-8.1 photo

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

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

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

我使用的是运行时应用程序,而不是适用于 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 运行时应用程序中拍摄照片 文章中的代码示例 http://dotnet.dzone.com/articles/how-capture-photo-your-windows-0

关于c# - 如何在 Windows Phone 8.1 中以正确的旋转、宽高比拍摄照片? (使用媒体捕捉),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26620523/

相关文章:

android - 如何授予xamarin相机权限

java - MediaRecorder 在 android 上开始视频捕捉的问题

Android相机在某些设备中提供旋转捕获的图像

c# - MVVM:将参数从 View 模型传递到 View

c# - 我可以将应用程序上传到 Windows 应用商店而不使用 .net native 工具链进行编译吗?

c# - 将填充的 List<BaseClass> 转换为 List<ChildClass>

c# - 平台调用 #define 指令

c# - 如何以最佳方式替换列表项

c# - 在 webview 商店应用程序中调用 Javascript

c# - 部署后找不到嵌入式 Razor View (IIS)