求救啊高手求解答!!!!base64转image

风吹腚腚凉 2016-03-09 04:59:27
用的方法
public static Image Base64ToImage(string strbase64)
{
//string base64Str = "图片的BASE64字符串";
byte[] bytes = System.Convert.FromBase64String(strbase64.Replace("data:image/png;base64,", ""));
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes))
{
return System.Drawing.Image.FromStream(ms);
}


}



前面那个图片是转换后的,后面是转换前的。
我就是测试,女的丑了点。。。。不要在意。
仔细看头发那里图形断裂了,请问为什么啊
...全文
243 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
socg 2016-03-10
  • 打赏
  • 举报
回复
也许图片本身不是png,被你转换成png了 return System.Convert.ToBase64String(ImageToBytes(s, System.Drawing.Imaging.ImageFormat.Png)); 改成 return System.Convert.ToBase64String(ImageToBytes(s,s.RawFormat));
风吹腚腚凉 2016-03-10
  • 打赏
  • 举报
回复
我是这样做的,从H5里面拿到的一个BASE64,到服务器端转换成image,然后那个image就有点问题。 我是找到的原图看的,不是加载后拉伸不拉伸看的。 图像大的话,你不仔细看,就看不出来。但是我用的是119*119的小图就感觉有点小模糊。
风吹腚腚凉 2016-03-10
  • 打赏
  • 举报
回复
引用 12 楼 tanta 的回复:
pictureBox1.Image = Bitmap.FromFile(ofd.FileName); pictureBox2.Image = server.base64(server.base64(new Bitmap(Bitmap.FromFile(ofd.FileName)))); ===================================== 传输过程应该没问题 , 我觉得问题在这儿。两个picturebox大小不一致,导致图像在picturebox中被拉伸。
没有啊一样的啊,你们测试一下看看?
tanta 2016-03-10
  • 打赏
  • 举报
回复
pictureBox1.Image = Bitmap.FromFile(ofd.FileName); pictureBox2.Image = server.base64(server.base64(new Bitmap(Bitmap.FromFile(ofd.FileName)))); ===================================== 传输过程应该没问题 , 我觉得问题在这儿。两个picturebox大小不一致,导致图像在picturebox中被拉伸。
tcmakebest 2016-03-09
  • 打赏
  • 举报
回复
为了避免显示问题造成误解,楼主不妨把两张图的显示位置交换一下,就楼主的代码不存在图片被修改的问题.
yanran_hill 2016-03-09
  • 打赏
  • 举报
回复
问题的关键是数据是否正确还原,那样的话,你直接按字节比对看看,,把MemoryStream复制成FileStream,使用notepad++打开十六进制文件看内容,再确定是哪儿出的问题
风吹腚腚凉 2016-03-09
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
是不是只是因为显示的方式不同,你将两种方式在同一个界面进行对比呢,然后你还需要确认下转换出来的字符串是一致的吗
图肯定不一样了。
失落的神庙 2016-03-09
  • 打赏
  • 举报
回复
根据楼上说的情况。 那就是可能你获得的标签大小与实际图片大小不符合。 以至于保存图片的时候拉伸了。
Poopaye 2016-03-09
  • 打赏
  • 举报
回复
很明显拉伸过了
失落的神庙 2016-03-09
  • 打赏
  • 举报
回复




public static string base64(Bitmap s)
{
return System.Convert.ToBase64String(ImageToBytes(s, System.Drawing.Imaging.ImageFormat.Png));
}

static byte[] ImageToBytes(Bitmap Image, System.Drawing.Imaging.ImageFormat imageFormat)
{
if (Image == null) { return null; }
byte[] data = null;
using (MemoryStream ms = new MemoryStream())
{
using (Bitmap Bitmap = Image)
{
Bitmap.Save(ms, imageFormat);
ms.Position = 0;
data = new byte[ms.Length];
ms.Read(data, 0, Convert.ToInt32(ms.Length));
ms.Flush();
}
}
return data;
}

public static Bitmap base64(string s)
{
return new Bitmap(byteArrayToImage(System.Convert.FromBase64String(s)));
}
static System.Drawing.Image byteArrayToImage(byte[] byteArrayIn)
{
if (byteArrayIn == null)
return null;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArrayIn))
{
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms);
ms.Flush();
return returnImage;
}
}

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "图片|*.png;*.jpg;*.bmp;*.gif|所有文件|*.*";
ofd.ShowDialog();
if (string.IsNullOrEmpty(ofd.FileName))
return;

pictureBox1.Image = Bitmap.FromFile(ofd.FileName);

pictureBox2.Image = server.base64(server.base64(new Bitmap(Bitmap.FromFile(ofd.FileName))));



我这样用的。
Poopaye 2016-03-09
  • 打赏
  • 举报
回复
左边那张高度119,右边117
  • 打赏
  • 举报
回复
是不是只是因为显示的方式不同,你将两种方式在同一个界面进行对比呢,然后你还需要确认下转换出来的字符串是一致的吗
  • 打赏
  • 举报
回复
你是按愿格式愿比例导出的么?
风吹腚腚凉 2016-03-09
  • 打赏
  • 举报
回复
右边眼睛那也有点问题

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧