Xamarin表单,用androidcamera设备拍摄的照片给图像提供了错误的方向

时间:2016-07-24 12:16:15

标签: c# android xamarin xamarin.forms

https://github.com/XLabs/Xamarin-Forms-Labs/wiki/Camera

我在这里使用这个项目,正如我的标题所示,当你在androiddevice上拍照时,如果以肖像方式拍摄,图像会以横向显示。

对于iOS我完全没有问题只是在android上我收到了这个问题。

这就是我的CameraViewModel中的TakePicture任务的样子:

private async Task TakePicture ()
{
    Setup();

    ImageSource = null;

    await this._mediaPicker.TakePhotoAsync(new CameraMediaStorageOptions { DefaultCamera = CameraDevice.Front, MaxPixelDimension = 400}).ContinueWith(t =>
    {
        if (t.IsFaulted)
        {
            var s = t.Exception.InnerException.ToString();
        }
        else if (t.IsCanceled)
        {
            var canceled = true;
        }
        else
        {
            var mediaFile = t.Result;

            ImageSource = ImageSource.FromStream(() => mediaFile.Source);

            return mediaFile;
        }

        return null;
    }, _scheduler);
}

我在google搜索后尝试做的是在TakePicture函数中添加这行代码:

if (mediaFile.Exif.Orientation != ExifLib.ExifOrientation.TopLeft)
{
    System.Diagnostics.Debug.WriteLine ("picture is not portrait");
}

一旦我在Android上拍了一张照片"图片不是肖像"显示在日志中,但我不太清楚从哪里开始。 如果我添加:

mediaFile.Exif.Orientation = ExifLib.ExifOrientation.TopLeft;

在if语句中,应用程序在拍照后崩溃。没有错误消息或没有。它只是关闭了。

1 个答案:

答案 0 :(得分:1)

您可以在此处找到用于调整从Android相机捕获的图像方向的代码:https://forums.xamarin.com/discussion/comment/18786/#Comment_18786