Android 从将位图更改为十六进制字符串提高性能
我正在尝试将捕获的照片(以.jpeg格式)转换为十六进制字符串,但当涉及到操作时,需要2分钟以上才能返回成功的转换。除了增加缓冲区大小外,您能告诉我如何提高性能吗?(在Android中使用) 下面是我的代码Android 从将位图更改为十六进制字符串提高性能,android,arrays,bitmap,hex,fileoutputstream,Android,Arrays,Bitmap,Hex,Fileoutputstream,我正在尝试将捕获的照片(以.jpeg格式)转换为十六进制字符串,但当涉及到操作时,需要2分钟以上才能返回成功的转换。除了增加缓冲区大小外,您能告诉我如何提高性能吗?(在Android中使用) 下面是我的代码 private String changeByteToHex(byte[] a) { StringBuilder sb = new StringBuilder(); for (byte d : a) { sb.append(String.format("%02
private String changeByteToHex(byte[] a) {
StringBuilder sb = new StringBuilder();
for (byte d : a) {
sb.append(String.format("%02X", d));
}
return sb.toString();
}
public String photoEncode(File file) {
try{
ByteArrayInputStream inStream = retrieveByteArrayInputStream(file);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] temp = new byte[8192];
int read;
while((read = inStream.read(temp)) >= 0){
outStream.write(temp, 0, read);
}
byte[] data = outStream.toByteArray();
return changeByteToHex(data);
} catch(Exception ex) {
ex.printStackTrace();
return null;
}
}
我不认为有任何有效的方法可以做到这一点,但我怀疑你每次都能成功地做到这一点,而不会遇到任何内存不足的错误。但这可能会导致一个错误,我知道你为什么首先计划将照片转换为十六进制?因为捕获的照片可能是敏感内容。在上传到服务器之前,必须先将其编码为数据字节。为了防止ANR,您可以在AsyncTask中运行上述代码,但将整个图像字节转换为字节数组和字符串对象最终将导致内存不足错误。