我在做人脸识别时,发现同一张图片识别为不是一张。
场景:一张图片由前端传来,格式为base64.
同样一张图片由后端转化为base64。
结果发现,人脸识别不匹配。
原因:
Base64编码包有很多,稍不注意可能会得不到期望的结果引起bug。
使用不同的工具包将图片转化为base64编码。有可能出现不同的效果。
前端转化的base64编码是不换行的。
而后端转化的base64编码是换行的(由使用的转换包决定)。
所以造成同一张图片转化的base64不一样。
解决方案:
根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行
部分Base64编码的java库还按照这个标准实行。
如果不希望换行,换用Apache的 commons-codec.jar。
如果喜欢换行,你只能手动根据76个字符进行插入换行符。