一、现象描述

在开发过程中遇到了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) {                    // 清空baos                    baos.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却需要处理一下。

更多相关文章

  1. EditText输入框的长度调整
  2. android 字符串绘制示例
  3. Android加载大图防止OOM
  4. Android图片压缩浅谈
  5. 一个小码农的5年历程
  6. Android中Notification的framework层讲解
  7. FAQ_17 android string.xml 里面的 %
  8. Android中仿QQ聊天内容中提取电话号码,URL
  9. Android中TextView实现分段显示不同颜色的字符串

随机推荐

  1. Oracle系统表v$session、v$sql字段说明(转
  2. 项目连接MySQL数据库,提示异常
  3. mysql 中 case when then .... else end
  4. linux下安装2个mysql 失败
  5. MySql生日闰月处理
  6. sql*loader问题,我有几万条记录,为什么只
  7. sql2005指定字段插入空格。
  8. 请问图片存到MySQL服务器中的时候如何操
  9. mysql 全表扫描、全索引扫描、索引覆盖(
  10. docker应用-6(mysql+mycat 搭建数据库集群