2 hangjymoyu hangjymoyu 于 2016.04.19 13:08 提问

C#Base64转图片报参数无效 50C

byte[] arr = Convert.FromBase64String(inputStr);
MemoryStream ms = new MemoryStream(arr ,0, arr.Length);
Bitmap bmp = new Bitmap(ms);
bmp.Save(ConfigData.IDCardPath + ID + ".jpg", ImageFormat.Jpeg);

                    这一句报参数无效的错误:Bitmap bmp = new Bitmap(ms);

                    网上看到都是这么做的,求教各路大神啊

4个回答

CSDNXIAOD
CSDNXIAOD   2016.04.19 13:12

Android 图片压缩图片转Base64工具类
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

showbo
showbo   Ds   Rxr 2016.04.19 13:38

MemoryStream ms = new MemoryStream(arr ,0, arr.Length);

==>改下面的试试,而且你的inputStr格式是否正确。。。不包含data:images/gif;这个数据

MemoryStream ms = new MemoryStream(arr);

showbo
showbo 回复hangjymoyu: 是不是接口返回的数据用了什么算法压缩过的吧,不是原始的base64字符串
一年多之前 回复
showbo
showbo 回复hangjymoyu: 如果没包含那就是给接口返回的base64字符串有问题了。。解码图片base64代码就是这样的。。
一年多之前 回复
hangjymoyu
hangjymoyu 回复无聊码农: 是别人的接口给的base64字符串,没有data:images/gif;
一年多之前 回复
showbo
showbo 回复hangjymoyu: 你确认base64的图片数据是正确的没有?base64从哪里搞来的,如果是客户端html img的src加载的base64字符串内容,默认是有data:images/gif;前缀的
一年多之前 回复
hangjymoyu
hangjymoyu MemoryStream ms = new MemoryStream(arr);也会报同样的错,不包含data:images/gif;这个数据是什么意思啊
一年多之前 回复
zanfeng
zanfeng   2016.04.19 21:47

arr是不是null啊
你那个字符串是不是图片的base64要弄清楚啊。

hlg1259728542
hlg1259728542   2016.04.21 17:12

试试这段代码:

byte[] buffer = Convert.FromBase64String(headImg);
MemoryStream ms = new MemoryStream(buffer);
Bitmap bmp = Image.FromStream(ms) as Bitmap;

string filePath = "C:/File/test.png"
DirectoryInfo TheFolder = new DirectoryInfo(filePath);
if (!TheFolder.Exists)
{
Directory.CreateDirectory(filePath);
}
bmp.Save(filePath);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!