【发布时间】:2021-09-30 19:47:59
【问题描述】:
我已将现有图像转换为 base64,我想在其上添加文本。但是,这仅返回原始图像。你能告诉我我在哪里犯错了吗?
var signatureData = Convert.FromBase64String(signature);
var stream = new MemoryStream(signatureData);
var signatureBitmap = SKBitmap.Decode(stream);
var canvas = new SKCanvas(signatureBitmap);
var origin = new SKPoint();
var paint = new SKPaint
{
TextSize = 10,
IsAntialias = true,
Color = SKColors.Black,
IsStroke = false
};
origin.X = 10;
origin.Y = 30;
paint.TextAlign = SKTextAlign.Left;
canvas.DrawText("text", origin, paint);
canvas.Flush();
var resultImage = SKImage.FromBitmap(signatureBitmap);
var data = resultImage.Encode(SKEncodedImageFormat.Png, 100);
return Convert.ToBase64String(data.ToArray());
【问题讨论】:
-
在画布上绘制后,您永远不会将其转换为位图。
resultImage只是对您开始使用的imageBytes进行编码。见stackoverflow.com/questions/59392658/… -
我已经更新了问题。现在我正在转换位图但仍然是原始图像
-
不,你在画布之后仍然没有对它做任何事情。请参阅我上一条评论中的链接问题 - 它使用 Snapshot() 方法来捕获画布表面
标签: c# xamarin.forms skiasharp