Base64 字符串转图片 问题整理汇总
前言
最近碰到了一些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 字符串转图片 问题整理汇总的更多相关文章
- java 图片转base64字符串、base64字符串转图片
java 图片转base64字符串.base64字符串转图片 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64编码字符串 * ...
- 前端获取Base64字符串格式图片Ajax到后端处理
前端获取到的Base64字符串格式图片一般都是经过处理的图片,例如:裁剪过后的,这里假设data为获取到的Base64字符串格式图片 Base64格式图片的格式为 “data:image/png;ba ...
- 保存头像- vue项目-base64字符串转图片
<img :onerror="errpic" class="customerHead" :src="param.customerHead&quo ...
- c# 中base64字符串和图片的相互转换
c#base64字符串转图片用到了bitmap类,封装 GDI+ 位图,此位图由图形图像及其特性的像素数据组成. Bitmap 是用于处理由像素数据定义的图像的对象. 具体bitmap类是什么可以自己 ...
- php将base64字符串转换为图片
昨天用一个js插件 [链接]: http://www.erdangjiade.com/js/910.html 实行了图片裁剪并预览,不过它生产的图片资源是一个base64字符串,不好保存后来在网上找到 ...
- C# imgage图片转base64字符/base64字符串转图片另存成
//图片转为base64编码的字符串 protected string ImgToBase64String(string Imagefilename) { try { Bitmap bmp = new ...
- java 图片Base64字符串转图片二进制数组
public static byte[] base64ToImgByteArray(String base64) throws IOException{ sun.misc.BASE64Decoder ...
- C# 常用方法——base64字符串转图片
其他常用方法详见:https://www.cnblogs.com/zhuanjiao/p/12060937.html /// <summary> /// base64编码的文本转为图片 / ...
- .NET将图片Base64字符串还原为图片(jpg格式)并保存到本地
1. 了解Base64字符串的形式是:data:image/jpeg;base64,字符串 2 .Base64字符串转换为图片的代码实现: string[] str = base64Str.Split ...
随机推荐
- 【译】用jQuery 处理XML--浏览器中的XML与JavaScript
用jQuery 处理XML--写在前面的话 用jQuery 处理XML-- DOM(文本对象模型)简介 用jQuery 处理XML--浏览器中的XML与JavaScript 用jQuery 处理XML ...
- C++ std::multiset
std::multiset template < class T, // multiset::key_type/value_type class Compare = less<T>, ...
- Java生成验证码原理(jsp)
验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...
- 基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化
回到目录 LazyInitializer.EnsureInitialized是frameworks4.0引入的新东西,实现对属性延时初始化的功能,它作用在System.Threading命名空间下,所 ...
- mybatis插入的同时获取主键id
<insert id="insertAndReturnId" parameterType="com.qianlong.cms.entity.AppCmsRole&q ...
- 练习3:修改withdraw 方法 练习目标-使用有返回值的方法:在本练习里,将修改withdraw方法以返回一个布尔值来指示交易是否成功。
boolean withdraw(double get){ if(get<=balance) { System.out.println("取钱"+get+"元,当余 ...
- 快速入门系列--WebAPI--04在老版本MVC4下的调整
WebAPI是建立在MVC和WCF的基础上的,原来微软老是喜欢封装的很多,这次终于愿意将http编程模型的相关细节暴露给我们了.在之前的介绍中,基本上都基于.NET 4.5之后版本,其System.N ...
- 体验WP 8.1 Update1开发不一定要更新VS2013 Update3
WP 8.1开发者预览版,估计大家也用得很High了,最近,MS推送了Update,主要的东西,不用说,就是最近被说得很火的小娜(Cortana),其实在推Update前几天,还有过一次小更新,当然我 ...
- PHP扩展开发入门
原文:http://www.orlion.ga/1090/ 写一个最简单的将字符串全部变成大写的函数: <?php function my_toupper($str) { return strt ...
- 关于c#动态加载程序集的一些注意事项
Assembly下有LoadFile,LoadFrom等方法可以加载程序集. LoadFile只加载你给定路径的那个dll,LoadFrom会自动加载依赖的dll. 如:A依赖B,LoadFile(& ...