1
resposta

Erro Image.io. read - image == null

Prezados, boa tarde!

Estou com o seguinte código:

public static String convert(String base64String) {

    // Decodifica a string Base64 em um array de bytes
    byte[] imageBytes = Base64.getDecoder().decode(base64String);

    try {
        ByteArrayInputStream bis = new ByteArrayInputStream(imageBytes);
        BufferedImage image = ImageIO.read(bis);

        // Cria um ByteArrayOutputStream para armazenar os bytes da imagem JPG
        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        // Salva a imagem no formato JPG no ByteArrayOutputStream
        ImageIO.write(image, "jpg", bos);

        // Codifica os bytes da imagem JPG em formato Base64, add na lista e retorna a
        // string resultante
        return Base64.getEncoder().encodeToString(bos.toByteArray());

    } catch (

    IOException e) {
        e.printStackTrace();
        return null;
    }
}

Na linha do BufferedImage image = ImageIO.read(bis) a image está vindo nula eu não sei dizer o por quê? Alguém pode me ajudar. O objetivo desse código é converter Base64 para Imagem.

1 resposta

Olá, Lorran! Tudo bem?

Pelo que pude entender, o erro "Image.io.read - image == null" significa que a imagem não está sendo lida corretamente pelo método ImageIO.read().

Uma possível solução é verificar se o array de bytes da imagem está sendo decodificado corretamente e se o InputStream está sendo criado sem erros. Além disso, é importante verificar se o formato da imagem está correto (no caso do exemplo, está sendo utilizado o formato "jpg").

Uma sugestão de código para realizar a conversão de Base64 para imagem é a seguinte:

public static BufferedImage decodeToImage(String imageString) {

    BufferedImage image = null;
    byte[] imageByte;
    try {
        BASE64Decoder decoder = new BASE64Decoder();
        imageByte = decoder.decodeBuffer(imageString);
        ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
        image = ImageIO.read(bis);
        bis.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return image;
}

Espero ter ajudado e bons estudos!