Xamarin表单:jamesmontemagno/MediaPlugin:所选图片在添加到IOS应用程序的UI时正在旋转
我跟随博客从画廊和照相机中拍照。但在IOS的UI中,选定的图片以右旋转的形式显示问题只在使用相机时出现,我对多媒体资料没有任何问题。此功能在android和UWP中运行良好 下面添加的屏幕截图: 摄像机编码:Xamarin表单:jamesmontemagno/MediaPlugin:所选图片在添加到IOS应用程序的UI时正在旋转,ios,xamarin.forms,media,Ios,Xamarin.forms,Media,我跟随博客从画廊和照相机中拍照。但在IOS的UI中,选定的图片以右旋转的形式显示问题只在使用相机时出现,我对多媒体资料没有任何问题。此功能在android和UWP中运行良好 下面添加的屏幕截图: 摄像机编码: async void CameraClick() { try { await CrossMedia.Current.Initialize(); if (!Cro
async void CameraClick()
{
try
{
await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
await DisplayAlert("Camera", "No camera available.", "OK");
return;
}
_mediaFile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Directory = "Sample",
Name = "test.jpg",
AllowCropping = true
});
if (_mediaFile == null)
return;
profileImage.Source = ImageSource.FromStream(() =>
{
isPicture = true;
return _mediaFile.GetStream();
});
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Exception:>" + ex);
}
}
设备:IOS SE
媒体插件版本:3.1.1
我用于显示图像的控件:Xam.plugins.Forms.Imagecircle 2.0.2(对于android和UWP,我使用的是1.8.1)
Gallery pictures工作正常,问题仅在使用相机拍照时出现。android和UWP部分没有问题。原因: 即使在
Xamarin
之外,这也是一种常见的体验。它是由iOS
引起的
UIImage有一个属性imageOrientation
,用于指示
UIImageView和其他UIImage使用者旋转原始图像数据。
此标志很有可能保存到exif数据中
在上载的jpeg图像中,但用于查看该图像的程序不可用
纪念那面旗帜
解决方案:
在Github中的jamesmontemagno/MediaPlugin
部分的问题中,有几个问题与您遇到的问题类似。似乎使用GetStreamWithImageRotatedForExternalStorage
可以解决此问题
你可以参考:
另一种方式是,您可以自己旋转图像
以下是一些可能对您有所帮助的链接:
在过去的几个月里,我在iOS上遇到了这个问题。
解决方法是在代码中再添加一行,即:-SaveMetaData=false,
async void CameraClick()
{
try
{
await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
await DisplayAlert("Camera", "No camera available.", "OK");
return;
}
_mediaFile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Directory = "Sample",
Name = "test.jpg",
AllowCropping = true,
SaveMetaData = false
});
if (_mediaFile == null)
return;
profileImage.Source = ImageSource.FromStream(() =>
{
isPicture = true;
return _mediaFile.GetStream();
});
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Exception:>" + ex);
}
}
您可能需要更新您的问题、正在使用的特定设备、媒体插件的版本以及用于显示图像的控件。图像可能包含图像控件不遵守的嵌入旋转元数据。@BenReierson用请求的详细信息更新了问题。我在使用相同插件的应用程序中没有看到此问题,但您可以尝试使用ffcachedimage()查看是否正确显示。它有一个圆图像变换,如果需要,可以用来复制ImageCircle控件。@Benreerson我使用的是Visual Studio提供的模拟器,相机在该模拟器上不工作。有没有其他方法来测试模拟器中的摄像头功能?我也看到了同样的问题,我总是使用真实的设备来拍摄照片。