Vi que ainda não encerraram este tópico, então não quis replicar minha dúvida.
Meu problema é apenas em ler um arquivo Blob e transformá-lo novamente em imagem para exibir no meu App. A inserção será feita em um servidor e não é importante para mim. O problema é que eu pego o array de bytes do Blob e tento decodificar para um Bitmap, mas quando vou usá-lo vejo que está nulo.
Faço da seguinte forma:
public static ImageView converterBlobParaImagem(Context c, byte[] bytes) {
try { // Tenta converter o blob em uma imagem
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
// 'bytes' é o Blob que vem do banco, está vindo preenchido corretamente
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
ImageView img = new ImageView(c);
img.setImageBitmap(bmp); // Verifiquei que este 'bmp' está nulo...
return img; // retorna a imagem
} catch (Exception e) {
info("Erro ao converter o arquivo binário para imagem. " + e.getLocalizedMessage());
return new ImageView(c); // Retorna a imagem do jeito que está
} // Fim do controle try/catch
} // Fim do método converterBlobParaImagem
O array de byte é o Blob que eu pego do banco de dados, levando em consideração que podem ser uma imagem em JPG, PNG ou BMP.
Por que ele não consegue decodificar? É algo relacionado ao “options” ali, não é? Verifiquei os bytes e eles estão preenchidos, ou seja, está realmente retornando do banco, só não consigo transformar.
Ainda sou iniciante em Android e gostaria de aprender como ele trata essa imagem vinda de um campo Blob e como eu posso manipulá-la.