簡體   English   中英

BufferedImage到帶有黑色背景的文件

[英]BufferedImage to File with black background

我正在嘗試將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)”來保存文件,但是該文件沒有任何內容,只有黑色背景。

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM