Image / Jpeg Base 64 to Image

时间:2014-09-09 15:44:18

标签: c# image

我有像这样的image / jped base64代码,

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA......

我需要转换为此代码的图像并将文件另存为jpeg文件。我想到了Windows Form(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 Photo Viewer上看起来像这样 enter image description here

但是当我在谷歌Chrome上运行这个基本64代码时,没有问题。在Google Chrome浏览器上查看效果不错。

总结我的问题,我需要base64代码到Image并将我的服务器保存为jpeg文件。 我怎么解决这个问题? 感谢。

2 个答案:

答案 0 :(得分:1)

将Base64直接转换为文件,避免将其加载到图像中,这样它应该像原始图像一样完美,当然这仍然无法解决显示问题的图像。

byte[] newfile = Convert.FromBase64String(data);
File.WriteAllBytes(@"C:\path\to\file.jpg", newfile);

答案 1 :(得分:-1)

我认为问题是大端和小端不匹配,请参阅http://en.wikipedia.org/wiki/Endianness