调用支付宝的人脸集合查询图片的Base64解码
优采云 发布时间: 2020-08-06 05:08人脸识别结果查询界面zoloz.identification.user.web.query
支付宝返回的imgStr图像字符串不是标准的base64格式.
图片无法解析.
因为标准Base64不适合直接在URL中传输,
因为URL编码器会将标准Base64中的“ /”和“ +”字符更改为“%XX”之类的形式,
因此,对URL使用了改进的Base64编码,
如果需要转换为标准base64图像格式,则需要通过以下方法执行转换.
1. 首先,首先以正确的格式将支付宝返回的base64转换为base64
public static String safeUrlBase64Decode(final String imgStr ) {
String base64Str = safeBase64Str.replace('-', '+');<br /> base64Str = base64Str.replace('_', '/');<br /> int mod4 = base64Str.length() % 4;<br /> if (mod4 > 0) {<br /> base64Str = base64Str + "====".substring(mod4);<br /> }<br /> return base64Str;<br />}<br /><br />2. 然后对正确格式的base64图片进行解码<br />
public static File base64ToFile(String base64) {<br /> if(base64==null||"".equals(base64)) {<br /> return null;<br /> }<br /> byte[] buff= Base64.decode(base64);<br /> File file=null;<br /> FileOutputStream fout=null;<br /> try {<br /> file = File.createTempFile("tmp", null);<br /> fout=new FileOutputStream(file);<br /> fout.write(buff);<br /> } catch (IOException e) {<br /> e.printStackTrace();<br /> }finally {<br /> if(fout!=null) {<br /> try {<br /> fout.close();<br /> } catch (IOException e) {<br /> e.printStackTrace();<br /> }<br /> }<br /> }<br /> return file;<br />}
3.以上就得到了file 文件,如果需要把file文件转成流<br />
InputStream fileInputStream = new FileInputStream(file);