旋转位图Xamarin

旋转位图Xamarin,xamarin,bitmap,rotation,xamarin.android,Xamarin,Bitmap,Rotation,Xamarin.android,我正在从Web服务器加载图像,如果方向错误,我想旋转它。我在手机上看到了如何从位图中执行此操作,它使用文件名,但不使用实际位图。我用它来调整大小,但不确定旋转部分 public Bitmap resizeAndRotate(Bitmap image, int width, int height) { Bitmap newImage= Bitmap.createScaledBitmap(image, newWidth, newHeight, true); return newIma

我正在从Web服务器加载图像,如果方向错误,我想旋转它。我在手机上看到了如何从位图中执行此操作,它使用文件名,但不使用实际位图。我用它来调整大小,但不确定旋转部分

public Bitmap resizeAndRotate(Bitmap image, int width, int height)
{
    Bitmap newImage= Bitmap.createScaledBitmap(image, newWidth, newHeight, true);
    return newImage;
}

通过传递一个
Android.Graphics.Matrix
,可以在一次调用中缩放和旋转位图,该矩阵在转换为
bitmap.CreateBitmap
时包括缩放和旋转:

public Bitmap resizeAndRotate(Bitmap image, int width, int height)
{
    var matrix = new Matrix();
    var scaleWidth = ((float)width) / image.Width;
    var scaleHeight = ((float)height) / image.Height;
    matrix.PostRotate(90);
    matrix.PreScale(scaleWidth, scaleHeight);
    return Bitmap.CreateBitmap(image, 0, 0, image.Width, image.Height, matrix, true);
}

只有当它需要旋转时,它才会旋转吗?不是所有人都需要它。@LarrySeymour你说的“需要”是什么意思?示例代码
.PostRotate(90)
将始终旋转位图,如果原始图像具有
Exif
数据,您可以有条件跳过此矩阵旋转,只缩放图像。使用我的应用程序,我可以拍照,购买Defuilt它在横向中。若我在纵向拍摄,它仍然保存在横向,所以并不是所有的photosd都需要旋转。最初,如果我的照片仍在手机上,我可以使用exif进行旋转,但我会将图像保存在web服务器上,然后根据需要进行下载。使用exif时,我将文件名添加到大小和旋转方法中,但从eWebServer调用时,我没有该文件名字符串可供使用。如何从tp my method中传递的位图中获取exif数据?@LarrySeymour如果图像未保留exif元数据,或者您无法访问原始数据(通过将其嵌入数据库、图像文件名等),那么您将不知道是否要旋转它。。。。实际位图数据(RGBA)不知道向上/向左/旋转…@sushingover是否知道如何为Xamarin.ios执行此操作?