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的时候确实没有出错,虽然我不明白具体的原因是什么但是我觉得以后还是不要多此一举的好,而且如上段代码还严重的限制的对方图片的格式。

  • 相关阅读:
    给力牛人
    设计模式
    微软真的要放弃Windows品牌吗?
    SQL2005 Express 自动安装之命令行
    SQL where之 in 在变量
    数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF
    别浪费了你的大内存[转]
    QQ空间免费养5级花和拥有人参果
    asp.net2 统一搜索引擎关键字编码[转]
    把网速提高4倍的方法和动画教程
  • 原文地址:https://www.cnblogs.com/qzzy/p/BASE64TOIMAGE.html
Copyright © 2011-2022 走看看