1

Tengo una app en Android Studio que registra un usuario en una base de datos y guarda su documento como llave primaria, guarda también nombre y profesión ademas guarda una imagen, en mis archivos tengo una clase de nombre "Usuario" donde recibo esos parámetros y en la imagen que recibe la redimensiono para bajar la resolución, la imagen la recibo decodificada como string, el problema es que cuando intento registrar me sale este error especificamente en la linea

"Bitmap.createScaledBitmap();":
java.lang.NullPointerException: Attempt to invoke virtual method 'int
android.graphics.Bitmap.getWidth()' on a null object reference

Agradecería mucho su ayuda ya que no tengo idea de como solucionar este error

public class Usuario {

private Integer document;
private String name;
private String profession;
private String date;
private Bitmap image;
private String routeImage;

public String getRouteImage() {
    return routeImage;
}

public void setRouteImage(String routeImage) {
    this.routeImage = routeImage;
}

public Integer getDocument() {
    return document;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;

    try {
        byte[] byteCode = Base64.decode(date, Base64.DEFAULT);
        //this.image = BitmapFactory.decodeByteArray(byteCode, 0, byteCode.length);

        int alto = 100; // height in pixels
        int ancho = 100; // width in pixels

        Bitmap foto = BitmapFactory.decodeByteArray(byteCode, 0, byteCode.length);
        this.image = Bitmap.createScaledBitmap(foto, alto, ancho, true);

    }catch (Exception e){
        e.printStackTrace();
    }
}

public Bitmap getImage() {
    return image;
}

public void setImage(Bitmap image) {
    this.image = image;
}

public void setDocument(Integer document) {
    this.document = document;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getProfession() {
    return profession;
}

public void setProfession(String profession) {
    this.profession = profession;
}

}
Juan Salvador Portugal
  • 6,565
  • 8
  • 19
  • 41
Assert
  • 155
  • 5
  • Posible duplicado de [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) – JDev Feb 26 '19 at 07:47

1 Answers1

2

Para obtener una imagen a partir de un String, la cadena debe estar codificada en Base64, si la cadena no esta codificada es imposible que obtengas un Bitmap a partir de ella.

Usa este método:

public Bitmap StringToBitMap(String encodedString){
     try{
        byte [] encodeByte=Base64.decode(encodedString,Base64.DEFAULT);
        Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
        return bitmap;
     }catch(Exception e){
        e.getMessage();
        return null;
     }
   }

Revisa si el valor de la variable date en realidad esta codificada en Base64, te recomiendo usar: https://www.base64decode.org/

Jorgesys
  • 103,630
  • 13
  • 52
  • 124