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

 

转载于:https://www.cnblogs.com/julyluo/p/6201441.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值