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

问题描述

用的方法publicstaticImageBase64ToImage(stringstrbase64){//stringbase64Str="图片的BASE64字符串";byte[]bytes=System.Convert.FromBase64String(strbase64.Replace("data:image/png;base64,",""));using(System.IO.MemoryStreamms=newSystem.IO.MemoryStream(bytes)){returnSystem.Drawing.Image.FromStream(ms);}}前面那个图片是转换后的,后面是转换前的。我就是测试,女的丑了点。。。。不要在意。仔细看头发那里图形断裂了,请问为什么啊

解决方案

本帖最后由 wjfwd2010 于 2016-03-09 17:04:52 编辑
解决方案二:
右边眼睛那也有点问题
解决方案三:
你是按愿格式愿比例导出的么?
解决方案四:
是不是只是因为显示的方式不同,你将两种方式在同一个界面进行对比呢,然后你还需要确认下转换出来的字符串是一致的吗
解决方案五:
publicstaticstringbase64(Bitmaps){returnSystem.Convert.ToBase64String(ImageToBytes(s,System.Drawing.Imaging.ImageFormat.Png));}staticbyte[]ImageToBytes(BitmapImage,System.Drawing.Imaging.ImageFormatimageFormat){if(Image==null){returnnull;}byte[]data=null;using(MemoryStreamms=newMemoryStream()){using(BitmapBitmap=Image){Bitmap.Save(ms,imageFormat);ms.Position=0;data=newbyte[ms.Length];ms.Read(data,0,Convert.ToInt32(ms.Length));ms.Flush();}}returndata;}publicstaticBitmapbase64(strings){returnnewBitmap(byteArrayToImage(System.Convert.FromBase64String(s)));}staticSystem.Drawing.ImagebyteArrayToImage(byte[]byteArrayIn){if(byteArrayIn==null)returnnull;using(System.IO.MemoryStreamms=newSystem.IO.MemoryStream(byteArrayIn)){System.Drawing.ImagereturnImage=System.Drawing.Image.FromStream(ms);ms.Flush();returnreturnImage;}}

OpenFileDialogofd=newOpenFileDialog();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(newBitmap(Bitmap.FromFile(ofd.FileName))));我这样用的。
解决方案六:
很明显拉伸过了
解决方案七:
左边那张高度119,右边117
解决方案八:
根据楼上说的情况。那就是可能你获得的标签大小与实际图片大小不符合。以至于保存图片的时候拉伸了。
解决方案九:
应该不是拉伸不拉伸的问题试试用方法////摘要://使用指定的编码器和图像编码器参数,将该System.Drawing.Image保存到指定的文件。////参数://filename://字符串,包含要将此System.Drawing.Image保存到的文件的名称。////encoder://此System.Drawing.Image的System.Drawing.Imaging.ImageCodecInfo。////encoderParams://用于该System.Drawing.Image的System.Drawing.Imaging.EncoderParameters。////异常://T:System.ArgumentNullException://filename或encoder为null.////T:System.Runtime.InteropServices.ExternalException://该图像以错误的图像格式保存。-或-该图像被保存到创建该图像的文件。publicvoidSave(stringfilename,ImageCodecInfoencoder,EncoderParametersencoderParams);

参数ImageCodecInfoencoderEncoderParametersencoderParams和原图一致
解决方案十:
引用3楼starfd的回复:

是不是只是因为显示的方式不同,你将两种方式在同一个界面进行对比呢,然后你还需要确认下转换出来的字符串是一致的吗

图肯定不一样了。
解决方案十一:
问题的关键是数据是否正确还原,那样的话,你直接按字节比对看看,,把MemoryStream复制成FileStream,使用notepad++打开十六进制文件看内容,再确定是哪儿出的问题
解决方案十二:
为了避免显示问题造成误解,楼主不妨把两张图的显示位置交换一下,就楼主的代码不存在图片被修改的问题.
解决方案十三:
pictureBox1.Image=Bitmap.FromFile(ofd.FileName);pictureBox2.Image=server.base64(server.base64(newBitmap(Bitmap.FromFile(ofd.FileName))));=====================================传输过程应该没问题,我觉得问题在这儿。两个picturebox大小不一致,导致图像在picturebox中被拉伸。
解决方案十四:
引用12楼tanta的回复:

pictureBox1.Image=Bitmap.FromFile(ofd.FileName);pictureBox2.Image=server.base64(server.base64(newBitmap(Bitmap.FromFile(ofd.FileName))));=====================================传输过程应该没问题,我觉得问题在这儿。两个picturebox大小不一致,导致图像在picturebox中被拉伸。

没有啊一样的啊,你们测试一下看看?
解决方案十五:
我是这样做的,从H5里面拿到的一个BASE64,到服务器端转换成image,然后那个image就有点问题。我是找到的原图看的,不是加载后拉伸不拉伸看的。图像大的话,你不仔细看,就看不出来。但是我用的是119*119的小图就感觉有点小模糊。
解决方案:
也许图片本身不是png,被你转换成png了returnSystem.Convert.ToBase64String(ImageToBytes(s,System.Drawing.Imaging.ImageFormat.Png));改成returnSystem.Convert.ToBase64String(ImageToBytes(s,s.RawFormat));

时间: 2024-12-03 14:04:00

求救啊高手求解答!!!!base64转image的相关文章

高级人员问卷 求解答

问题描述 1,32位WIN平台,JDK1.6,在上述环境下一个JVM实际最多可利多少内存2,15选5是一种数字彩票游戏,即从15个数字中随便选择不重复的5个数字组成一注彩票号码进行投注.一共3003注号码,从最小的一注号码到最大的一注号码依次是:序号 彩票号码1 01 02 03 04 052 01 02 03 04 06 ······10 01 02 03 04 1411 01 02 03 04 1512 01 02 03 05 06 ······3003 11 12 13 14 15求算法:

java基础高手看这里了,这几道基础性的面试题求解答。

问题描述 java基础高手看这里了,这几道基础性的面试题求解答. 同学出去应聘,笔试的时候遇到这几道基础题不会做,拿给我看,发现自己也不怎么会,java基础好多都有些忘了,来帮忙解答一下吧. 1.实现一个函数,函数有一个形参,类型为整数,功能是将形参的十进制数的二进制序列打印到控制台上. 2.实现一个函数,函数有一个形参,类型为集合,功能是将集合中的内容按照每行3个输出(写出两种以上方法). 3.有数据表,字段定义为如下: 客户 商品 报价 报价日期 表中存放着不同客户,不同商品,不同日期的报价

json排列问题,求高手帮忙解答

问题描述 json排列问题,求高手帮忙解答 [ {name:"abc",path:"01"}, {name:"def",path:"02"}, {name:"aaa",path:"0101"}, {name:"bbb",path:"0102"}, {name:"ccc",path:"010101"}, ...

求高手帮忙解答一下c++的问题,我不知道哪里有问题?

问题描述 求高手帮忙解答一下c++的问题,我不知道哪里有问题? //rectangular.h #include class rectangular {public: rectangular(float a=3,float b=4,float c=5); void in_output(); private: float length,width,height,volume; }; rectangular::rectangular(float a,float b,float c) { length

c#-求高手来解答 C#跟物理呼叫器编程相关的问题

问题描述 求高手来解答 C#跟物理呼叫器编程相关的问题 程序跟物理呼叫器连接上了,但是我这边有两台物理呼叫器,我不知道怎么获取到底是哪台物理呼叫器点了"呼叫" ,求做过这个相关的高手来解答!谢谢

java类的问题-java基础高手看这里了,这几道基础性的面试题求解答。

问题描述 java基础高手看这里了,这几道基础性的面试题求解答. 编制父类Shape:包括普通成员变量图形的行数.列数:图形开始绘制的列数:静态变量图形个数:以及方法绘制图形: 编写两个子类:菱形和矩形,这两个子类继承父类中的绘制图形方法,即在控制台中输出菱形或矩形(根据构造函数中给出的行.列): 验证上述要求,使得屏幕上显示多个图形,并且输出图形的个数. 解决方案 你应该先贴出你的代码,有问题的话大家讨论,直接让人做题不好吧. 解决方案二: abstract class Shape { pub

c-求高手帮忙解答一下关于程序的题目,纠结一上午,跪求帮忙!

问题描述 求高手帮忙解答一下关于程序的题目,纠结一上午,跪求帮忙! #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct node *PtrToNode; typedef PtrToNode stack; typedef PtrToNode Position; struct node { char *symbol; Position next; }; int Isempty(s

java基础高手看这里了,这道基础性的试题求解答

问题描述 java基础高手看这里了,这道基础性的试题求解答 编制父类Shape:包括普通成员变量图形的行数.列数:图形开始绘制的列数:静态变量图形个数:以及方法绘制图形: 编写两个子类:菱形和矩形,这两个子类继承父类中的绘制图形方法,即在控制台中输出菱形或矩形(根据构造函数中给出的行.列): 验证上述要求,使得屏幕上显示多个图形,并且输出图形的个数. 解决方案 class Shape { public int rows; public int columns; public int maginc

求高手解答~为什么table添加之后不能显示在aspx文件中,还有skin怎么使用啊~求解答~

问题描述 RT~~跪求解答~ 解决方案 解决方案二:该回复于2011-11-30 09:46:44被版主删除解决方案三:把前台代码贴出来看下哈~~解决方案四:引用2楼sfxdawn的回复: 把前台代码贴出来看下哈~~ 不好意思~我调出来了~~那个~~能不能介绍一下那个skin文件怎么用啊~~~还有主题什么的~