Como salvar e puxar do bd mysql imagens

Eu consigo salvar a imagem como bytes[]; O banco está configurado certo, como blob.
A questão é que não consigo fazer puxar do banco a imagem.

`Toda hora essa bendita mensagem.

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException`

Segue o código pra salvar e puxar a imagem:

public static BufferedImage setImagemDimensao(String caminhoImg, Integer imgLargura, Integer imgAltura) {
Double novaImgLargura = null;
Double novaImgAltura = null;
Double imgProporcao = null;
Graphics2D g2d = null;
BufferedImage imagem = null, novaImagem = null;
try {
//— Obtém a imagem a ser redimensionada —
imagem = ImageIO.read(new File(caminhoImg));
} catch (IOException ex) {
System.out.println(ex.getMessage());
Logger.getLogger(ManipularImagem.class.getName()).log(Level.SEVERE, null, ex);
}
//— Obtém a largura da imagem —
novaImgLargura = (double) imagem.getWidth();
//— Obtám a altura da imagem —
novaImgAltura = (double) imagem.getHeight();
//— Verifica se a altura ou largura da imagem recebida é maior do que os —
//— parâmetros de altura e largura recebidos para o redimensionamento —
if (novaImgLargura >= imgLargura) {
imgProporcao = (novaImgAltura / novaImgLargura);//calcula a proporção
novaImgLargura = (double) imgLargura;
//— altura deve <= ao parâmetro imgAltura e proporcional a largura —
novaImgAltura = (novaImgLargura * imgProporcao);
//— se altura for maior do que o parâmetro imgAltura, diminui-se a largura de —
//— forma que a altura seja igual ao parâmetro imgAltura e proporcional a largura —
while (novaImgAltura > imgAltura) {
novaImgLargura = (double) (–imgLargura);
novaImgAltura = (novaImgLargura * imgProporcao);
}
} else if (novaImgAltura >= imgAltura) {
imgProporcao = (novaImgLargura / novaImgAltura);//calcula a proporção
novaImgAltura = (double) imgAltura;

        //--- se largura for maior do que o parâmetro imgLargura, diminui-se a altura de ---  
        //--- forma que a largura seja igual ao parâmetro imglargura e proporcional a altura ---  
        while (novaImgLargura > imgLargura) {
            novaImgAltura = (double) (--imgAltura);
            novaImgLargura = (novaImgAltura * imgProporcao);
        }
    }

    novaImagem = new BufferedImage(novaImgLargura.intValue(), novaImgAltura.intValue(), BufferedImage.TYPE_INT_RGB);
    g2d = novaImagem.createGraphics();
    g2d.drawImage(imagem, 0, 0, novaImgLargura.intValue(), novaImgAltura.intValue(), null);

    return novaImagem;
}

Pra puxar:

public static byte[] getImgBytes(BufferedImage image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
ImageIO.write(image, “JPEG”, baos);
} catch (IOException ex) {
//handle it here… not implemented yet…
}
InputStream is = new ByteArrayInputStream(baos.toByteArray());
return baos.toByteArray();
}

Estes códigos, peguei na internet. E estou usando ele como base pra essa parte, já que nunca utilizei essa manipulação de dados ( com img ) no bd.

O erro ocorre ao puxar a imagem do banco (método)? Em qual linha? A primeira ação seria debugar o código, pra saber qual objeto está nulo, que é o que causa o nullpointer. Às vezes, o erro nem está nesses métodos, mas em alguma outra parte antes desses códigos.

Isso é uma aplicação web ou desktop? Não é muito comum, para a maioria das aplicações, armazenar imagens no banco, apenas copiá-las para uma pasta no servidor (via cópia de arquivos ou upload, se for web). Assim, fica muito mais fácil trabalhar com elas.

Abraço.

È desktop, e após debugar, apresenta nada de errado. Mas percebi uma coisa, acho que é o método de salvar afinal. Fiz um insert manual dentro do banco e o método que fiz de puxar, deu certo.

Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: image == null!

Ela não esta sendo salva.

#edit 2 :
Antes não dava pra salvar certas imagens, mas agora alterei de blob pra longblob e esse problema foi resolvido ( salvar diretamente no banco ).

Alguém pra sanar esta dúvida?! Já tentei várias coisas, mas nem por reza braba consigo salvar.

Acabei encontrando uma solução sozinho mesmo, arcaico mas funcional.
Converto a imagem em bytes e depois converto para string. Salvo no banco e depois uso um método para converter a string em imagem. Bom, deu certo. Caso alguém ache válido e precise, me avise que passo.