首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将base64字符串转换为图像并保存

将base64字符串转换为图像并保存
EN

Stack Overflow用户
提问于 2011-03-23 10:25:13
回答 10查看 310.6K关注 0票数 154

下面是我的代码:

代码语言:javascript
复制
protected void SaveMyImage_Click(object sender, EventArgs e)
        {
            string imageUrl = Hidden1.Value;
            string saveLocation = Server.MapPath("~/PictureUploads/whatever2.png") ; 


            HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
            WebResponse imageResponse = imageRequest.GetResponse();

            Stream responseStream = imageResponse.GetResponseStream();

            using (BinaryReader br = new BinaryReader(responseStream))
            {
                imageBytes = br.ReadBytes(500000);
                br.Close();
            }
            responseStream.Close();
            imageResponse.Close();

            FileStream fs = new FileStream(saveLocation, FileMode.Create);
            BinaryWriter bw = new BinaryWriter(fs);
            try
            {
                bw.Write(imageBytes);
            }
            finally
            {
                fs.Close();
                bw.Close();
            }
        }
}

最上面的imageUrl声明接受一个Base64图像字符串,我想把它转换成一个图像。我认为我的代码集只适用于"www.mysite.com/test.jpg“这样的图像,而不适用于Base64字符串。有人有什么建议吗?谢谢!

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-03-23 10:33:43

下面是一个示例,您可以修改该方法以接受字符串参数。然后用image.Save(...).保存图像对象

代码语言:javascript
复制
public Image LoadImage()
{
    //data:image/gif;base64,
    //this image is a single pixel (black)
    byte[] bytes = Convert.FromBase64String("R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==");

    Image image;
    using (MemoryStream ms = new MemoryStream(bytes))
    {
        image = Image.FromStream(ms);
    }

    return image;
}

当字节表示位图时,可能会出现异常A generic error occurred in GDI+.。如果发生这种情况,请在处理内存流之前保存图像(同时仍在using语句中)。

票数 252
EN

Stack Overflow用户

发布于 2016-02-03 01:30:49

您可以将Base64直接保存到文件中:

代码语言:javascript
复制
string filePath = "MyImage.jpg";
File.WriteAllBytes(filePath, Convert.FromBase64String(base64imageString));
票数 104
EN

Stack Overflow用户

发布于 2013-04-27 05:03:40

这就是我最终要做的。

代码语言:javascript
复制
    private void SaveByteArrayAsImage(string fullOutputPath, string base64String)
    {
        byte[] bytes = Convert.FromBase64String(base64String);

        Image image;
        using (MemoryStream ms = new MemoryStream(bytes))
        {
            image = Image.FromStream(ms);
        }

        image.Save(fullOutputPath, System.Drawing.Imaging.ImageFormat.Png);
    }
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5400173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档