我有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
字符串和像素坐标:
像素坐标的输入就像这样
"1023:762,1046:842,1326:849,1261:738"
我收到错误:
Base-64字符数组或字符串的长度无效。
非常感谢任何帮助。