C# Convert.ToBase64String 始终将我的图像逆时针旋转 90 度



我正在研究一个拍摄照片并将其转换为base64字符串的函数。但出于某种原因,我试着查找这个,Convert.ToBase64String总是将我的图像逆时针旋转 90 度。我试过查找这个,但找不到任何有类似问题的人。这是代码

    private async Task<string> GetPhotoBase64StringAsync(int compressionQuality = 50, PhotoSize photoSize = PhotoSize.Medium)
    {
        string filename = $"{DateTime.Now.ToString("MMddyyyy_Hmmtt")}.jpg";
        var photo = await UtilityService.OpenCameraAsync(filename, compressionQuality, photoSize);
        if (photo != null)
        {
            var bytes = await photo.GetStream().ConvertToBytes();
            var base64string = Convert.ToBase64String(bytes);
            return base64string
        }
        return string.Empty;
    }

photo 是由 IM 使用的 xamarin 插件返回的对象。 我知道一个事实,该插件以正确的方向返回图像,因为我之后显示并且它没有旋转。

当我将图像转换为流以及从流转换为 base64 时,就会出现问题。如果我在return base64string放置一个断点并将 base64 字符串复制并粘贴到在线 base64 进行图像转换,图像将逆时针旋转 90 度。

我也试过 var base64string = bytes.ToBase64String();但那也不起作用。

这太奇怪了,我以前从未反驳过这一点。

您是否尝试过旧的IO.MemoryStream而不是.ConvertToBytes()

            byte[] bytes;
            using (var memoryStream = new System.IO.MemoryStream())
            {
                photo.GetStream().CopyTo(memoryStream);
                bytes = memoryStream.ToArray();
            }

问题出在插件上。我正在使用媒体插件,不得不使用其他获取流方法

var bytes = await photo.GetStreamWithImageRotatedForExternalStorage().ConvertToBytes();
var base64string = Convert.ToBase64String(bytes);
return base64string

最新更新