2014-01-03 4 views
0

Я пытаюсь сохранить BufferedImage (полученный byte []) в файл, но он создает черный фон без изображения. Я использую фотокамеру из простых поверхностей.BufferedImage to File с черным фоном

Это мой 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 (изображение," JPG "DestFile)", чтобы сохранить файл, но этот файл не не имеют ничего, только черный фон.

ответ

0

Основные элементы PhotoCam составляют изображения PNG. Формат PNG - по дизайну. Если вы хотите работать с другим форматом файла, вам необходимо выполнить пост-обработку изображения PNG, отображаемого компонентом PF.

реорганизовать salvarImagemFromImageObject функцию с .png DestFile:

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

EDIT

Записывает результирующие 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); 
+0

Но мне нужно сохранить как «JPG», ic не сохраняйте PNG. Как мне это сделать ? – Shelly

+0

Отредактировал мой ответ –

+0

не работал, изображение продолжает черный фон – Shelly

Смежные вопросы