zoukankan      html  css  js  c++  java
  • BASE64码转图片

    最近的开发中让同事在与第三方的交互中写了一个接口,用来数据交互其中有图片流的接收这一部分。

    突然一天发现,有一张图片接收了以后不正确,试了各种方式把文件流都记录下来在线测试了一下也能转换出正确的图片,但是为什么项目里的代码就不行,而且也仅是这样图片。

    代码如下:

     1  byte[] bytes = Convert.FromBase64String(avatar);
     2 
     3                     using (MemoryStream mStream = new MemoryStream(bytes))
     4                     {
     5                         using (Bitmap bmp = new Bitmap(mStream))
     6                         {
     7 
     8                             if (suffix.ToLower() == "jpg")
     9                             {
    10                                 bmp.Save(path, ImageFormat.Jpeg);
    11                             }
    12                             if (suffix.ToLower() == "png")
    13                             {
    14                                 bmp.Save(path, ImageFormat.Png);
    15                             }
    16                             if (suffix.ToLower() == "bmp")
    17                             {
    18                                 bmp.Save(path, ImageFormat.Bmp);
    19                             }
    20                         }
    21                     }
    View Code

    后来,客户的一句话提醒了我,他的图片是从PNG直接改的后缀名为jpg

    然后我就试了下果然是这个问题,如果使用  bmp.Save(path, ImageFormat.Png)去保存就没有问题。

    于是,退而求其次,我把就写了个demo把代码做出如下就该就没有问题

     1 byte[] bytes = Convert.FromBase64String(avatar);
     2 
     3                     using (MemoryStream mStream = new MemoryStream(bytes))
     4                     {
     5                         using (Bitmap bmp = new Bitmap(mStream))
     6                         {
     7                             bmp.Save(path);
     8 
     9                             //if (suffix.ToLower() == "jpg")
    10                             //{
    11                             //    bmp.Save(path, ImageFormat.Jpeg);
    12                             //}
    13                             //if (suffix.ToLower() == "png")
    14                             //{
    15                             //    bmp.Save(path, ImageFormat.Png);
    16                             //}
    17                             //if (suffix.ToLower() == "bmp")
    18                             //{
    19                             //    bmp.Save(path, ImageFormat.Bmp);
    20                             //}
    21                         }
    22                     }
    View Code

    这个问题就在于当你不设置ImageFormat的时候确实没有出错,虽然我不明白具体的原因是什么但是我觉得以后还是不要多此一举的好,而且如上段代码还严重的限制的对方图片的格式。

  • 相关阅读:
    PHP 表单
    php之表单-2(表单验证)
    go语言使用官方的 log package 来记录日志
    golang 中timer,ticker 的使用
    go语言slice的理解
    GETTING STARTED WITH THE OTTO JAVASCRIPT INTERPRETER
    golang time.Duration()的问题解疑
    css3动画
    【转】golang中的并行与并发
    【转】Golang 关于通道 Chan 详解
  • 原文地址:https://www.cnblogs.com/qzzy/p/BASE64TOIMAGE.html
Copyright © 2011-2022 走看看