如何为存储位图的缓存生成密钥?

时间:2014-08-16 22:42:20

标签: android image caching bitmap

我想在我的应用中集成此缓存机制:Using DiskLruCache in android 4.0 does not provide for openCache method

现在,当我有位图时,我应该使用哪个键?或者更好:我如何生成密钥?

如果我可以从位图本身生成密钥,那么我以后可以调用contains(String key)来检查位图是否已经在缓存中。

那我该怎么办?

1 个答案:

答案 0 :(得分:0)

您希望通过散列位图字节来生成密钥,确保很可能没有两个位图会产生相同的密钥,除非它们是相同的。

您需要将Bitmap转换为字节数组才能使用内置的MessageDigest库。

Bitmap bmp = new Bitmap(); // load your bitmap...
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

MessageDigest digest = MessageDigest.getInstance("SHA-256");  
digest.update(byteArray);
byte[] keyBytes = digest.digest(byteArray);

然后,将关键字节转换为带有a Bytes to Hex function like this one的字符串。