保存时图像会旋转

时间:2016-09-03 11:07:26

标签: c# uwp sharpdx

我有问题。我有我的UWP应用程序来拍摄照片。我捕获它,保存它,然后加载它并写入文本。问题是我以纵向方向捕捉并保存照片,但是当我加载照片时,照片是横向的。保存图片时是否有任何属性可以防止此行为?我认为方向问题是由加载方法引起的,但是当我在msdn论坛上发布我的问题并说明图片时它也会旋转到横向。

值得一提的是:我尝试用翻转的横向方向保存图片,但输出处于正常的景观中......

这是我的保存方法:

private static async Task ReencodeAndSavePhotoAsync(IRandomAccessStream stream, StorageFile file, PhotoOrientation photoOrientation)
    {
        using (var inputStream = stream)
        {
            var decoder = await BitmapDecoder.CreateAsync(inputStream);

            using (var outputStream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                var encoder = await BitmapEncoder.CreateForTranscodingAsync(outputStream, decoder);

                var properties = new BitmapPropertySet { { "System.Photo.Orientation", new BitmapTypedValue(photoOrientation, Windows.Foundation.PropertyType.UInt16) } };

                await encoder.BitmapProperties.SetPropertiesAsync(properties);
                await encoder.FlushAsync();
            }
        }
    }

获取照片方向的方法:

private static PhotoOrientation ConvertOrientationToPhotoOrientation(SimpleOrientation orientation)
    {
        switch (orientation)
        {
            case SimpleOrientation.Rotated90DegreesCounterclockwise:
                return PhotoOrientation.Rotate90;
            case SimpleOrientation.Rotated180DegreesCounterclockwise:
                return PhotoOrientation.Rotate180;
            case SimpleOrientation.Rotated270DegreesCounterclockwise:
                return PhotoOrientation.Rotate270;
            case SimpleOrientation.NotRotated:
            default:
                return PhotoOrientation.Normal;
        }
    }

已解决:问题是您使用不关心元数据的程序。我在我自己的程序中打开了图片,红色只是位图,而不是有关预览旋转信息的元数据,而只是像素的默认位置。我不得不旋转BitmapEncoder:

encoder.BitmapTransform.Rotation = BitmapRotation.Clockwise90Degrees;

我希望这能帮到某人

0 个答案:

没有答案