Android Base64解码失败问题
一、现象描述
在开发过程中遇到了base64解码失败问题,ios和Android同时调用上传人脸数据,通过拍照拿到图片信息再装成base64字符串传给后台,此时发现ios上传的图片没有问题,Android端上传的时候后台却报了base64编解码失败,复制了日志信息的base64串去网站验证发现可以转换。
二、问题发现
经过一番折腾与思考,发现我Base64日志信息特别长,去官网验证时每次都删除调换行符,ding 灵机一动,猜测有可能是换行符原因导致
三、问题解决
在将base64字符串传给后台之前去掉换行符,经过验证确实可以解决问题,下面是去掉字符串换行符的代码,
faceBase64Url.replaceAll("[\\t\\n\\r]", "");
下面是图片转Base64的代码
public static String bitmapFaceToBase64(Bitmap bitmap) {// 要返回的字符串String reslut = null;ByteArrayOutputStream baos = null;try {if (bitmap != null) {baos = new ByteArrayOutputStream();/*** 压缩只对保存有效果bitmap还是原来的大小*/bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);/*** 压缩只对保存有效果bitmap还是原来的大小*/int options = 100;// 如果大于500kb则再次压缩,最多压缩三次while (baos.toByteArray().length / 1024 > 500 && options > 10) {// 清空baosbaos.reset();// 这里压缩options%,把压缩后的数据存放到baos中bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);options -= 10;}// 转换为字符串baos.flush();baos.close();Log.e("bingo", "最后大小:" + baos.toByteArray().length / 1024 + "k");reslut = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);} else {return null;}} catch (IOException e) {e.printStackTrace();} finally {try {if (baos != null) {baos.close();}} catch (IOException e) {e.printStackTrace();}}return reslut;}
四、存在疑问
不知道为什么ios转换后不需要去掉换行符。android却需要处理一下。
五、疑问答案
reslut = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
使用BASE64转字符串时使用DEFAULT模式了,这种DEFAULT模式遇到长度超过76的字符串就会加回车,造成以上问题,将模式改成NO_WRAP即可解决问题。
Android Base64解码失败问题相关推荐
- 柯达i2400批量自动扫描仪 JoySailScan控件转出的Base64尾部永远多一个'/',将导致解码失败
柯达i2400批量自动扫描仪 JoySailScan控件转出的Base64尾部永远多一个'/',将导致解码失败 解决办法: 去掉尾部的'/'即可正常解码了 var base64Data = code. ...
- js base64解码JWT失败:VM273:1 Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to
前端获取后端服务生成JWT,利用js方法base64解码payload段: window.atob("eyJzdWIiOiJ0ZXN0MyIsInVzZXJJZCI6IjEwMTY5MiIs ...
- java 和 Android Base64加密
Java8 Base64 Java 8 新特性 在Java 8中,Base64编码已经成为Java类库的标准. Java 8 内置了 Base64 编码的编码器和解码器. Base64工具类提供了一套 ...
- java 和 Android Base64加密,java开发面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- des加密+base64编码,base64解码+des解密
des加密+base64编码,base64解码+des解密 des简单介绍 base64简单介绍 运行效果图 TestActivity.java DataEncryptionUtil.java des ...
- 腾讯云 sdk调用 显示 图片解码失败 解决方案
参考人脸识别接入常见问题汇总 - 腾讯云开发者社区-腾讯云的第六条 前情提要,接口需要image 的base64编码str,于是我的基本处理办法是 # 初始化用于对比的图片 filename1 = ' ...
- Java对图片Base64转码--HTML对Base64解码 [ Java加强版 ]
Java对图片Base64编码 package base64;import java.awt.image.BufferedImage; import java.io.ByteArrayInputStr ...
- 【AVD】FFmpeg + MediaCodec 实现 Android 硬件解码,中间有个大坑
最近在做移动端音视频编解码,首先要实现的是移动端视频的解码功能.纯的 FFmpeg 方法在移动端也能实现,但是效率上的确要慢一些,1080p 的视频还好,但是上到 2k.4k,那个解码速度(以肉眼可见 ...
- Xamarin Android项目运行失败
Xamarin Android项目运行失败 错误信息:Build Failed: MonoDroid does not support running the previous version. P ...
最新文章
- 从零开始学JavaScript一(简介)
- 如何打造具有绝对市场竞争力的团队
- css选择器中间的空格
- FLV文件中VideoPacket的详解
- 实例62:python
- 【PMP】组织结构类型
- 手写Java线程池_超详细解说_绝对能运行_代码超详细注释
- Python 二维创建与插入值的二种方法
- 数据有为 智在决策 | 观远数据2019智能决策峰会圆满落幕
- 让开发者 so easy 的一站式服务到底存不存在?
- 纳税人基本信息与服务器端基本信息不符,网上报税对浏览器有什么要求吗
- [HAOI2005] 希望小学
- 网络计算机和弱电,弱电工程师和网络工程师的区别,你知道吗?
- python开发一般用什么工具,最常用的python开发工具
- Excel点击按钮隐藏指定行
- 计算机相关的外国文献,计算机发参考文献外国 计算机发参考文献有哪些
- discuz php单页,从PHP的模板引擎看Discuz!模板机制
- 群晖Docker部署Microsoft SQL Server 2019
- 写全武汉的火锅店..更新版 恩..欢迎补充 ^_^
- 山东大学项目实训——解决微信小程序无法获得用户信息问题
热门文章
- AutoAugment中16种数据增强方法可视化直观展示
- 《自控力》-- 精华摘抄
- 文献阅读 - Combining Sketch and Tone for Pencil Drawing Production
- 调用百度ocr接口识别表格
- 数值积分: 梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式
- 微信开发者工具关联gitee
- AutoConfig工具使用指南
- 苹果电脑计算机无法启动,MacBook Pro 按开机按钮没反应无法开机
- c语言拔萝卜算法,拔萝卜优秀说课稿
- uniapp框架如何实现仿微信相册插件 | 图视频编辑 + 压缩