Olá, boa tarde, eu estou desenvolvendo um aplicativo que cria perguntas. Eu salvo essas perguntas, num arquivo XML. Só que eu tenho que pegar uma imagem em bitmap e salvar dentro de uma tag XML. E depois pegar essas informações dentro da tag e transformar em bitmap de novo. Será que tem como?
Você pode tentar converter essa imagem para base64 (bytes para texto) e armazenar o texto no xml. Fazendo isso, vc consegue recriar a imagem.
1 curtida
E como eu pego a minha referência ao objeto Bitmap e o transformo em array para depois usar a classe Base64
Arquivo para byte array:
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream .toByteArray();
Byte array para Base64:
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
Meu código teste ficou assim. Obrigado mesmo pela ajuda. Espero que este tópico ajude também outras pessoas.
Bitmap image = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher); // Pego a imagem
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
String encode = Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray()); // Passo minha imagem para o encode 64
new AlertDialog.Builder(this).setMessage(encode).show();// Mostro o código na tela
byte[] byDaImg = Base64.getDecoder().decode(encode); // Transformo a imagem de base64 para uma array de bytes
ImageView imView = new ImageView(this);
Bitmap bt = BitmapFactory.decodeByteArray(byDaImg, 0, byDaImg.length); // Transformo a imagem em bitmap
imView.setImageBitmap(bt); // adiciono ela ao meu imageView
new AlertDialog.Builder(this).setView(imView).show(); // e a monstro na tela