我有问题。我有我的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;
我希望这能帮到某人