gpt4 book ai didi

c# - 在 C# 中将 DataUrl 转换为图像并写入包含字节的文件

转载 作者:可可西里 更新时间:2023-11-01 07:56:05 25 4
gpt4 key购买 nike

你好,我有这样的签名:

enter image description here

它被编码为一个 DataUrl,特别是这个字符串:

“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAADICAYAAADGFbfiAAAYlElEQVR4Xu2dC8w1R1nHQSCIgIKVGLmoiLciFwUs...(长字符串)”

我想做的是将此 DataUrl 转换为 PNG 图像,并将图像保存到设备,这就是我目前所做的:

if (newItem.FieldType == FormFieldType.Signature)
{
if (newItem.ItemValue != null)
{
//string completeImageName = Auth.host + "/" + li[i];
string path;
string filename;
string stringName = newItem.ItemValue;

var base64Data = Regex.Match(stringName, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binData = Convert.FromBase64String(base64Data);

path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

filename = Path.Combine(path, base64Data);

if (!File.Exists(filename))
{
using (var stream = new MemoryStream(binData))
{
//Code crashing here--------------------------
File.WriteAllBytes(filename, binData);
}
}

newItem.ItemValue = filename;

}
}

App.Database.SaveReportItem(newItem);

但我的代码使我的应用程序特别在这一行崩溃:

File.WriteAllBytes(文件名, binData);

我用作引用的示例 (Link) 使用的是 PictureBox,但 Xamarin 没有使用 pictureBox。

有什么想法吗?

最佳答案

正如@SLaks 提到的,我不需要 MemoryStream,我的代码的问题是路径和文件名以获得进一步的帮助这是工作代码:

if (newItem.FieldType == FormFieldType.Signature)
{
if (newItem.ItemValue != null)
{
//string completeImageName = Auth.host + "/" + li[i];
string path;
string filename;
string stringName = newItem.ItemValue;

var base64Data = Regex.Match(stringName, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var binData = Convert.FromBase64String(base64Data);

path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

//filename = Path.Combine(path, base64Data.Replace(@"/", string.Empty));

long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
string fileName = "Sn" + milliseconds.ToString() + ".PNG";
filename = Path.Combine(path, fileName);

if (!File.Exists(filename))
{
//using (var stream = new MemoryStream(binData))
//{
File.WriteAllBytes(filename, binData);
//}
}

newItem.ItemValue = filename;

}
}

App.Database.SaveReportItem(newItem);

图像显示:

enter image description here

关于c# - 在 C# 中将 DataUrl 转换为图像并写入包含字节的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27710576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com