Java BuffereImage到黑色背景的文件

Java BuffereImage到黑色背景的文件,java,jsf,primefaces,Java,Jsf,Primefaces,我试图将一个来自字节[]的BuffereImage保存到一个文件中,但它生成了一个没有该映像的黑色背景。我用的是primefaces的摄像头 这是我的ManagedBean方法: public void webcamCapture(CaptureEvent captureEvent) { try { byte[] data = captureEvent.getData(); InputStream in = new ByteArra

我试图将一个来自字节[]的BuffereImage保存到一个文件中,但它生成了一个没有该映像的黑色背景。我用的是primefaces的摄像头

这是我的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 simple方法使用ImageIO.writeimage、jpg和destFile来保存文件,但该文件没有任何内容,只有黑色背景。

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

使用.png文件重构salvarImagemFromImageObject函数:

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

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


但是我需要另存为JPG,我不能另存为PNG。我怎么做?
//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);