将Base64字符串转换为BitMap并使用像素坐标

时间:2018-03-10 15:54:08

标签: c# .net bitmap base64

我有Base64带标题的字符串,我正在尝试将其转换为BitMap并在 C#.NET 4.7(类库) <中绘制带有4个像素坐标的多边形/ p>

这是我的方法:

public Image MarkPixelCoordinates(Image image, string pixelCoordinates)
{
    try
    {
        image.OriginalBase64 = image.Base64;
        string converted = image.Base64.Split(',').ToList<string>()[1];
            var bitMapImage = Base64StringToBitmap(converted);
            var coordinates = pixelCoordinates.Split(',').ToList();
            foreach (var coordinate in coordinates)
            {
                var xys = coordinate.Split(':').Select(int.Parse).ToList();
                bitMapImage.SetPixel(xys[0], xys[1], Color.DarkSalmon);
            }

            using (MemoryStream ms = new MemoryStream())
            {
                bitMapImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] byteImage = ms.ToArray();
                image.Base64 = Convert.ToBase64String(byteImage); 
            }
        }
    }
    catch (Exception e)
    {
        Commentary.Print(
            $"Failed to mark pixel coordinates");
        Commentary.Print(e.Message);
        return image;
    }

    return image;
}

以下是将Base64转换为BitMap的方法:

private static Bitmap Base64StringToBitmap(string base64String)
{
    byte[] byteBuffer = Convert.FromBase64String(base64String);
    using (MemoryStream memoryStream = new MemoryStream(byteBuffer))
    {
        var bmpReturn = (Bitmap) System.Drawing.Image.FromStream(memoryStream);
        memoryStream.Close();
        return bmpReturn;
    }
}

这是我的Base64字符串和像素坐标:

Base64String Download Link

像素坐标的输入就像这样

"1023:762,1046:842,1326:849,1261:738"

我收到错误:

  

Base-64字符数组或字符串的长度无效。

非常感谢任何帮助。

0 个答案:

没有答案