【发布时间】:2014-09-09 15:44:17
【问题描述】:
我有这样的 image/jped base64 代码,
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA......
我需要,将此代码转换为图像并将文件保存为 jpeg 文件。我想到了 Windows 窗体(C#)。插入到文本框和按钮。在文本框中插入base 64代码(代码如上)并点击按钮。
private void button1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.Text))
{
string imageDataParsed = textBox1.Text.Substring(textBox1.Text.IndexOf(',') + 1);
byte[] imageBytes = Convert.FromBase64String(imageDataParsed);
MemoryStream ms1 = new MemoryStream(imageBytes);
Image img = Image.FromStream(ms1);
img.Save(Application.StartupPath + "\\Images\\1.jpg", ImageFormat.Jpeg);
}
}
文件另存为 jpeg。但是这个文件在 Windows 照片查看器上看起来像这样
但是当我在 Google Chrome 上运行这个 base 64 代码时,没有问题。在 Google Chrome 浏览器上查看不错。
总结我的问题,我需要 base64 代码到 Image 并将此文件保存为我的服务器作为 jpeg 文件。 我怎么解决这个问题? 谢谢。
【问题讨论】:
-
来自文本框时是否有 base64 UrlEncoded 或其他特殊字符?
-
到目前为止,您似乎还没有得到完整的字符串。请确保使用 small 的内联字符串和 complete 确实显示您观察到的行为的 base64 字符串示例更新您的示例。
-
这段代码对我有用。我还尝试使用截断的 Base64 字符串(我认为这是你的问题),但我得到了 FormatException 并且图像没有保存。
-
@Alexei Levenkov 我有完整的代码。因为当我在 chrome 浏览器上测试时,这张图片显示完美。但是当我保存为文件时,没有显示完全相同的代码。
-
我创建了一个简单的 jpeg 数据 url,它在被您的代码保存后在 chrome(作为 img 元素的 src)和 Windows 照片查看器中打开。看来你的形象有什么特别之处。您能否分享一下可以重现该问题的确切数据?