前言

最近碰到了一些base64字符串转图片的开发任务,开始觉得没啥难度,但随着开发的进展还是发现有些东西需要记录下。

Base64 转二进制

这个在net有现有方法调用:

Convert.FromBase64String(str);

但在这一步发现调用时就报错了:Additional information: Base-64 字符数组或字符串的长度无效。

网上搜索下才发现要转换的Base64字符串应该为4的整数,如果不是的话要在字符串的末端加上‘=’将其补全为4的整数。

int mod4 = str.Length % 4;
if (mod4 > 0)
{
str += new string('=', 4 - mod4);
}

原生二进制数据转图片

现在通过Base64的转换我们有了图片的二进制数据,一开始就简单通过以下代码转换为图片:

Image image = Image.FromStream(new MemoryStream(byte));

但可惜的是,这一步也报错了,这里大概就猜到应该是我们的二进制数据没有包含头部信息,这样就导致转换无法继续。

所以最后的解决方案如下:

public Bitmap CopyDataToBitmap(int width,int height,byte[] data)
{
//Here create the Bitmap to the know height, width and format
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb); //Create a BitmapData and Lock all pixels to be written
BitmapData bmpData = bmp.LockBits(
new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.WriteOnly, bmp.PixelFormat); //Copy the data from the byte array into BitmapData.Scan0
Marshal.Copy(data, 0, bmpData.Scan0, data.Length); //Unlock the pixels
bmp.UnlockBits(bmpData); //Return the bitmap
return bmp;
}

总结

以上就是base64字符串转图片碰到问题的汇总,这里记录下,并附带参考资料,有兴趣的同学可以参考下:

参考资料:

http://www.tek-tips.com/viewthread.cfm?qid=1264492

http://stackoverflow.com/questions/742236/how-to-create-a-bmp-file-from-byte-in-c-sharp

http://stackoverflow.com/questions/2925729/invalid-length-for-a-base-64-char-array

Base64 字符串转图片 问题整理汇总的更多相关文章

  1. java 图片转base64字符串、base64字符串转图片

    java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...

  2. 前端获取Base64字符串格式图片Ajax到后端处理

    前端获取到的Base64字符串格式图片一般都是经过处理的图片,例如:裁剪过后的,这里假设data为获取到的Base64字符串格式图片 Base64格式图片的格式为 “data:image/png;ba ...

  3. 保存头像- vue项目-base64字符串转图片

    <img :onerror="errpic" class="customerHead" :src="param.customerHead&quo ...

  4. c# 中base64字符串和图片的相互转换

    c#base64字符串转图片用到了bitmap类,封装 GDI+ 位图,此位图由图形图像及其特性的像素数据组成. Bitmap 是用于处理由像素数据定义的图像的对象. 具体bitmap类是什么可以自己 ...

  5. php将base64字符串转换为图片

    昨天用一个js插件 [链接]: http://www.erdangjiade.com/js/910.html 实行了图片裁剪并预览,不过它生产的图片资源是一个base64字符串,不好保存后来在网上找到 ...

  6. C# imgage图片转base64字符/base64字符串转图片另存成

    //图片转为base64编码的字符串 protected string ImgToBase64String(string Imagefilename) { try { Bitmap bmp = new ...

  7. java 图片Base64字符串转图片二进制数组

    public static byte[] base64ToImgByteArray(String base64) throws IOException{ sun.misc.BASE64Decoder ...

  8. C# 常用方法——base64字符串转图片

    其他常用方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html /// <summary> /// base64编码的文本转为图片 / ...

  9. .NET将图片Base64字符串还原为图片(jpg格式)并保存到本地

    1. 了解Base64字符串的形式是:data:image/jpeg;base64,字符串 2 .Base64字符串转换为图片的代码实现: string[] str = base64Str.Split ...

随机推荐

  1. js数组转json

    function arrayToJson(o) { var r = []; if (typeof o == "string") return "\"" ...

  2. 上学时的HTML+JS+CSS(小总结)

    html:超文本标记语言 基本标签: { 文本标签:<pre></pre>:原封不动的保留空白区域.      <br />:换行.      <hr wid ...

  3. Java中main()的args的知识点浅谈

    我们先来了解下Java中main()方法的默认定义格式: public static void main(String[] args){ }1.main方法是程序执行的入口,除了args这个形参变量可 ...

  4. EF架构~为导航属性赋值时ToList()的替换方案

    回到目录 今天在进行EF开发时,遇到一个问题,在进行join查询时,类中的一个集合类型的导航属性,在给它赋值时,将查询出来的结果ToList()后,出错了,linq to entity不支持这种操作, ...

  5. Atitit jsr规范化分类 attilax总结

    Atitit jsr规范化分类 attilax总结 按照技术类别可以分成以下几类:1.Java EE (39 JSRs) --- J2EE平台规范 2.Java SE (42 JSRs) --- J2 ...

  6. 1.1.1. Atitit Cocos2d-JS v3.x的问题

    1.1.1. Atitit Cocos2d-JS v3.x的问题   1.1. Api 兼容性 场景切换的api都不兼容了...  删除了比较多的api...可以dep啊.. 1.2. gui布局,, ...

  7. 【管理心得之四十】中文“其他”、英文“other”、日文“その他”..........................................

    场景再现====================={某研讨会}本学期为:调查研究.整理总结阶段.本阶段的主要任务是: 一.学习理论,收集.汇编学习资料,提高自己的素质..... 二.通过对部分班级学生 ...

  8. 转载:Spring AOP (上)

    工 作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大说过:“开发人员不可能一天到晚只有工作,肯定是需要自我学习.第一:为了更充实自己,保 持进步状态.第二:为了提升技术,提高开发能力.第三 ...

  9. wamp2.5 配置Apache允许外网访问

    找到<Directory "e:/wamp/www/">节点,在里面添加Require all granted

  10. ECMAScript 位运算符

    位运算符是在数字底层(即表示数字的 32 个数位)进行操作的. 重温整数 ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数).在 ECMAScript ...