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

  • 相关阅读:
    codeforces_1075_C. The Tower is Going Home
    leetcode_Stone Game_dp_思维
    leetcode_Counting Bits_dp
    Divide and Conquer_1.最大连续子数组
    python_MachineLearning_感知机PLA
    IIS中启用gzip压缩(网站优化)
    asp.net运行机制图
    asp.net 的那点事(2、浏览器和一般处理程序)
    asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)
    android环境搭配 运行android sdk manager时出现错误问题解决
  • 原文地址:https://www.cnblogs.com/qzzy/p/BASE64TOIMAGE.html
Copyright © 2011-2022 走看看