[英]Deflater makes (encrypted) byte[] bigger
我有大约900万个字节的byte [],我想将其存储到文件中。 我想使用Deflater压缩数组,但似乎该过程只会使数组(略大)。 我的数据不可压缩吗? 如果是这样,为什么? 还有其他方法可以使数组更小吗?
我的代码:
ByteArrayOutputStream baos = null;
Deflater dfl = new Deflater();
dfl.setLevel(Deflater.BEST_COMPRESSION);
dfl.setInput(data);
dfl.finish();
baos = new ByteArrayOutputStream();
byte[] tmp = new byte[1024];
try{
while(!dfl.finished()){
int size = dfl.deflate(tmp);
baos.write(tmp, 0, size);
}
} catch (Exception ex){
} finally {
try{
if(baos != null) baos.close();
} catch(Exception ex){}
}
Log.d(TAG, data.length + " " + baos.toByteArray().length);
return baos.toByteArray();
编辑:
我将磁盘上的图像转换为字节数组。 然后,我对其进行了加密。 现在,我想将该(加密的)byte []存储在文件中,以便以后可以读取并解密它,从而重新创建映像。 原始图像约为0.6MB,加密文件约为9MB。为用户着想,我想避免这么大的差异。
加密的数据应该表现得像随机噪声。 随机噪声是不可压缩的。 我建议您先压缩,然后再加密。
现在,如果图像采用压缩格式(例如jpeg),则进一步压缩可能无济于事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.