BufferedImage到文件与黑色背景

时间:2014-01-03 14:03:51

标签: java jsf primefaces

我正在尝试将BufferedImage(来自byte [])保存到文件中,但它产生的是没有图像的黑色背景。我正在使用来自primefaces的photoCam。

这是我的ManagedBean方法:

public void webcamCapture(CaptureEvent captureEvent) {
        try {
            byte[] data = captureEvent.getData();
            InputStream in = new ByteArrayInputStream(data);
            BufferedImage fotoBuffered = ImageIO.read(in);
            String idImagem = ImagemHelper.getInstance().salvarImagemFromImageObject(fotoBuffered);
            paciente.getPessoaFisica().setFoto(idImagem);

        } catch (Exception e) {
            addErrorMessage("Erro ao capturar imagem da webcam");
            FacesContext.getCurrentInstance().validationFailed();
        }
    }

方法“salvarImagemFromImageObject”简单地制作一个“ImageIO.write(image,”jpg“,destFile)”来保存文件,但是这个文件什么都没有,只是黑色背景。

1 个答案:

答案 0 :(得分:0)

Primefaces PhotoCam组件呈现PNG图像。 PNG格式是设计使然。如果您想使用其他文件格式,则需要对PF组件渲染的PNG图像进行后处理。

使用.png destFile重构 salvarImagemFromImageObject 函数:

ImageIO.write(fotoBuffered, "png", destFile);

修改

将生成的png数据写入jpeg格式:

//Converts PNG image to plain RGB format
BufferedImage newBufferedImage = new BufferedImage(fotoBuffered.getWidth(), fotoBuffered.getHeight(), BufferedImage.TYPE_INT_RGB);
newBufferedImage.createGraphics().drawImage(fotoBuffered , 0, 0, Color.WHITE, null);

//Then, writes to jpeg file
ImageIO.write(newBufferedImage, "jpg", destFile);