Util.java revision a55e2011ddbc4c2bac3789903ec338b892aacf10
1b71bf819c59c4b8ea5e6a8b0929f5057ba6a01e1Sam Juddpackage com.bumptech.glide.util;
21060a63023f1e07fd579d0edd94256560f0eab7dSam Judd
3a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Juddimport android.graphics.Bitmap;
4a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Juddimport android.os.Build;
5a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd
61060a63023f1e07fd579d0edd94256560f0eab7dSam Juddpublic class Util {
796006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    private static final char[] hexArray = "0123456789abcdef".toCharArray();
896006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    private static final char[] sha256Chars = new char[64]; //32 bytes from sha-256 -> 64 hex chars
91060a63023f1e07fd579d0edd94256560f0eab7dSam Judd
1096006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    public static String sha256BytesToHex(byte[] bytes) {
1196006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd        return bytesToHex(bytes, sha256Chars);
1296006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    }
1396006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd
1496006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    // Taken from:
1596006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    // http://stackoverflow.com/questions/9655181/convert-from-byte-array-to-hex-string-in-java/9655275#9655275
1696006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd    private static String bytesToHex(byte[] bytes, char[] hexChars) {
1796006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd        int v;
1896006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd        for ( int j = 0; j < bytes.length; j++ ) {
1996006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd            v = bytes[j] & 0xFF;
2096006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd            hexChars[j * 2] = hexArray[v >>> 4];
2196006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
221060a63023f1e07fd579d0edd94256560f0eab7dSam Judd        }
2396006426c97d4e4a3b4378585a847b50cd8b63d7Sam Judd        return new String(hexChars);
241060a63023f1e07fd579d0edd94256560f0eab7dSam Judd    }
25a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd
26a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd    /**
27a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd     * Returns the in memory size of the given {@link Bitmap}.
28a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd     */
29a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd    public static int getSize(Bitmap bitmap) {
30a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd        if (Build.VERSION.SDK_INT >= 19) {
31a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd            return bitmap.getAllocationByteCount();
32a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd        } else {
33a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd            return bitmap.getHeight() * bitmap.getRowBytes();
34a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd        }
35a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd    }
36a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd
371060a63023f1e07fd579d0edd94256560f0eab7dSam Judd}
38