基于Base64的图片转字符串-java和C#互通问题
前一段时间做了一个小项目,把一张图片传到服务器端,功能很简单,服务器端用.net MVC4实现的,客户端是winform程序。
昨天领导说客户端要移植一班Android程序,就花了点时间做了一个,传的时候发现java转出来的字符串跟C#的不一样,还原不了。
因为Base64是一个统一的标准,所以按道理应该是一样的才对。
期初用的是sun.misc.BASE64Encoder类,之后换了java.util.Base64.Encoder类就一致了。
问题解决,贴一下代码
C#:
1 public static string File2String(string path) 2 { 3 if (string.IsNullOrEmpty(path)) 4 { 5 throw new Exception("文件路径不能为空!"); 6 } 7 try 8 { 9 using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)) 10 { 11 byte[] buffByte = new byte[fs.Length]; 12 fs.Read(buffByte, 0, (int)fs.Length); 13 string str = Convert.ToBase64String(buffByte); 14 return str; 15 } 16 } 17 catch (DirectoryNotFoundException ex) 18 { 19 throw ex; 20 } 21 catch (Exception ex) 22 { 23 throw ex; 24 } 25 } 26 27 public static bool String2file(string inputString, string path, string filename) 28 { 29 if (string.IsNullOrEmpty(inputString)) 30 { 31 throw new Exception("输入数据不能为空"); 32 } 33 if (string.IsNullOrEmpty(path)) 34 { 35 throw new Exception("路径不能为空!"); 36 } 37 if (string.IsNullOrEmpty(filename)) 38 { 39 throw new Exception("文件名不能为空!"); 40 } 41 try 42 { 43 byte[] buff = Convert.FromBase64String(inputString); 44 FileInfo fi = new FileInfo(path + filename); 45 using (FileStream fs2 = fi.OpenWrite()) 46 { 47 fs2.Write(buff, 0, buff.Length); 48 return true; 49 } 50 } 51 catch (Exception ex) 52 { 53 throw ex; 54 } 55 }
java:
1 public static void main(String[] args) { 2 String s = Getstr(); 3 if(GenerateImage(s)) 4 System.out.println("t"); 5 else 6 System.out.println("f"); 7 } 8 9 private static String Getstr() { 10 String imgFile = "d://test.jpg"; 11 InputStream in = null; 12 byte[] data = null; 13 14 try { 15 in = new FileInputStream(imgFile); 16 data = new byte[in.available()]; 17 in.read(data); 18 in.close(); 19 } catch (IOException e) { 20 e.printStackTrace(); 21 } 22 23 Base64.Encoder d = Base64.getEncoder(); 24 return d.encodeToString(data); 25 } 26 27 // base64字符串转化成图片 28 public static boolean GenerateImage(String imgStr) { 29 if (imgStr == null) 30 return false; 31 Base64.Decoder decoder = Base64.getDecoder(); 32 try { 33 34 byte[] b = decoder.decode(imgStr); 35 for (int i = 0; i < b.length; ++i) { 36 if (b[i] < 0) { 37 b[i] += 256; 38 } 39 } 40 41 String imgFilePath = "d://new.jpg"; 42 OutputStream out = new FileOutputStream(imgFilePath); 43 out.write(b); 44 out.flush(); 45 out.close(); 46 return true; 47 } catch (Exception e) { 48 return false; 49 } 50 }
ps:import java.util.Base64,这句要在java1.8里才有,如果是1.7或之前版本,可以试试Apache下面的一个Base64的包。
转载于:https://www.cnblogs.com/imoonstal/p/4292567.html
基于Base64的图片转字符串-java和C#互通问题相关推荐
- php如何解码图片,php基于base64解码图片与加密图片还原实例_PHP
本文实例讲述了php基于base64解码图片与加密图片还原的实现方法.分享给大家供大家参考.具体实现方法如下: 本例中$data是一段经过base64编码的图片.具体代码如下: 代码如下: //文件名 ...
- 如何将原图和json融合_用 base64 进行图片和字符串互转,并保存至 json
介绍 图片在网络上,通常以二进制文件传输,但是可不可以用纯文本传输图片呢?答案是肯定的. 本文就简要介绍一下 Python 的 base64 库.它可以将图片转换成字符串,也可以从字符串"变 ...
- java—— 图片转字符串、字符串转图片、java Base64用法
方法一: 不太推荐使用 sun.misc.BASE64Decoder; sun.misc.BASE64Encoder; /*** 字符串转图片* @param imgStr 图片字符串* @param ...
- Java接受前端的base64,转换失败。base64转图片互相转换
spring boot前后端vue,base64转图片互相转换 vue就不展示了,下边只展示Java中互相转换的例子. Java实现图片转化成base64字符串 //图片转化成base64字符串 pu ...
- 用js实现基于Base64的数据或者图片的编码与解码
背景: 公司需要对接第三方的合作商,需要跳转至对方的网站,使用get请求访问对方链接直接跳转,get请求会直接暴露登陆的用户名和密码,我们采用base64编码,对用户信息进行保护. 常用的base64 ...
- java 字符串转成图片_java 转换图片为字符串,将字符串转换成图片显示
java 转换图片为字符串,将字符串转换成图片显示, 该方法只适用于比较小的图片传输,50K以内: try{ // 将图片转换成字符串 File imgFile = new File("f: ...
- nmmqq.php?/lspc.html,html中的图片直接使用base64编码后的字符串代替详解
网页中的图片是使用base64编码后的字符串代替了,这个叫做Data URI scheme,下面有个不错的示例,大家可以参考下 最近来了一个网页,里面有图片,但是却没有引用外部的图片资源,很好奇.查看 ...
- linux jpg图片转base64,html中的图片直接使用base64编码后的字符串代替
最近来了一个网页,里面有图片,但是却没有引用外部的图片资源,很好奇.查看代码后发现,里面的图片是使用base64编码后的字符串代替了,这个叫做Data URI scheme. Data URI sch ...
- html5 sfbapa cn,html中的图片直接使用base64编码后的字符串代替
html中的图片直接使用base64编码后的字符串代替 发布时间:2020-03-03 来源:未知 点击: 次 最近来了一个网页,里面有图片,但是却没有引用外部的图片资源,很好奇.查看代码后发现,里面 ...
最新文章
- Docker入门六部曲——基本引导
- 蓝桥杯_算法训练_表达式计算
- volunteer research
- [转载]非常量引用的初始值必须为左值的问题
- 抽取python 标准库页面生成 mobi 离线文件
- 腾讯云首次公开边缘计算网络开源平台,拥抱5G与万物互联
- 自然语言处理与中文分词的难点总结--学习笔记
- Java 学习笔记(121208)
- php中声明一个函数,php学习笔记之 函数声明
- nginx限制请求之一:(ngx_http_limit_conn_module)模块
- 基于Kubernetes集群部署skyDNS服务
- jmeter压力测试教程
- ArcGIS土壤稳定性评估(附练习数据下载)
- c语言partition头文件,c – dxvahd.h中的#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)何时成为true头文件...
- Linux下Firefox安装flash操作
- IDEA 顶部导航栏(Main Menu)不见了怎么办
- SMART硬盘检测参数详解
- 公关,从讲好一个故事开始
- 关于gb2312编码的xml解析
- 海康摄像头音频编码获取
热门文章
- python numpy安装-Python--Numpy安装
- python对excel某一列求和-96、python操作excel求和
- 小学生python入门-周边 | 小学生都开始学Python了,你还在等什么?
- python进阶书籍推荐-豆瓣评分9.4!年度最值得推荐的Python进阶书
- python不想学了-嫌Python太慢但又不想学C/C++?来了解下JIT技术
- php和python对比-PHP和Python性能比较:放弃PHP改用Python
- python教程txt免费下载-python编程从入门到实践PDF电子书教程免费下载
- python电脑版微信-python如何实现远程控制电脑(结合微信)
- 济南python工资一般多少钱-济南python编程培训班价格
- python用于什么-python用于什么