Android 图片转Base64字符串问题 Love The Way You Lie 2022-02-28 14:14 1054阅读 0赞 图片上传时,后台接收的方式有好几种,可以直接接收File对象,有时候要求将图片转成Base64编码以字符串的形式传给服务器。 这里我们说一下转Base64会遇到的问题。 ByteArrayOutputStream bos = new ByteArrayOutputStream(); //将bitmap转成字节数组流. boolean compress = bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos); if (compress) { String base64 = Base64.encodeToString(bos.toByteArray(), Base64.DEFAULT); } 这样生成的base64可能和IOS、Web前端生成的Base64不一致。 因为字符串过长时,在编码时会在字符串中加入一些换行符。 -------------------- **正确的方式** Base64编码时将Flag改为**NO\_WRAP** String base64 = Base64.encodeToString(bos.toByteArray(), Base64.NO_WRAP); 在Base64的源码中发现,**NO\_WRAP** 会忽略所有的行号,也就是换行符. /** * Encoder flag bit to omit all line terminators (i.e., the output * will be on one long line). */ public static final int NO_WRAP = 2;
还没有评论,来说两句吧...