Eu passei várias horas tentando descobrir como fazer isso. Eu li post após post aqui no stackoverflow e na documentação.
Eu tenho um android.graphics.Objeto bitmap e preciso obtê-lo "s md5 sum. No ponto em que quero verificar a soma, ele não foi salvo no sistema de arquivos. Vi várias maneiras de fazer isso para objetos java.io.File. Eu só preciso de uma função que recebe um objeto Bitmap e retorna a soma hexadecimal md5 como uma String.
Isso pode ter sido endereçado em algum lugar, mas se foi, não consegui entender ou deduzir como fazê-lo.
Quanto menos recursos forem pesados, melhor é o método.
Respostas:
8 para resposta № 1Obtenha bytes de bitmap para calcular md5.
Bitmap bm = ... // your bitmap
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object
byte[] bitmapBytes = baos.toByteArray();
Então você tem array de bytes agora. Você pode encontrar como obter md5 hash de matriz de bytes no android Aqui.
0 para resposta № 2
Eu não sou desenvolvedor Android, mas vejo na referência da API (http://developer.android.com/reference/android/graphics/Bitmap.html) existem métodos para:
- Obtendo o tamanho do bitmap: getWidth, getHeight
- obtendo os pixels como uma matriz de inteiros: getPixels
Assim, você poderia simplesmente criar uma matriz de tamanho necessário, ler todos os pixels e converter a matriz em byte [].
Então, não deve ser um problema calcular a soma md5 a partir dele.