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

时间:2019-03-25 14:25:20

标签: c# xamarin base64

我正在研究一个将照片拍照并将其转换为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();,但是那也不起作用。

这太奇怪了,我以前从来没有反驳过。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

问题出在插件上。我正在使用MediaPlugin,不得不使用其他getstream方法

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