2015-06-29 2 views
0

Я использую приведенный ниже код для записи BufferedIMage на диск, но я не могу открыть его с помощью окон, если я не закрываю свою программу. Я думал, что писатель. Разделение будет делать трюк, но я ошибся, я думаю, я что-то пропустил? Спасибо за помощь!writer.dispose() не работает по назначению

private void saveToFile(BufferedImage img, File file) throws IOException 
{ 
    ImageWriter writer = null; 
    java.util.Iterator iter = ImageIO.getImageWritersByFormatName("jpg"); 

    if(iter.hasNext()) 
    { 
     writer = (ImageWriter)iter.next(); 
    } 

    ImageOutputStream ios = ImageIO.createImageOutputStream(file); 
    writer.setOutput(ios); 
    ImageWriteParam param = new JPEGImageWriteParam(java.util.Locale.getDefault()); 
    param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ; 
    param.setCompressionQuality(0.98f); 

    writer.write(null, new IIOImage(img, null, null), param); 
    writer.dispose();// here the dispose not working 
} 
+0

Вы должны закрыть ImageOutputStream. –

ответ

1

Я думаю, вы должны закрыть ios. Попробуйте следующее:

private void saveToFile(BufferedImage img, File file) throws IOException 
{ 
    ImageWriter writer = null; 
    java.util.Iterator iter = ImageIO.getImageWritersByFormatName("jpg"); 

    if(iter.hasNext()) 
    { 
     writer = (ImageWriter)iter.next(); 
    } 

try { 
     ImageOutputStream ios = ImageIO.createImageOutputStream(file); 
     writer.setOutput(ios); 
     ImageWriteParam param = new JPEGImageWriteParam(java.util.Locale.getDefault()); 
     param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ; 
     param.setCompressionQuality(0.98f); 

     writer.write(null, new IIOImage(img, null, null), param); 
    } 

    finally { 
     if (ios != null) { 
      try { 
      ios.flush(); 
      } 
    catch (  IOException e) { 
      } 
      try { 
      ios.close(); 
      } 
    catch (  IOException e) { 
      } 
     } 
     if (writer != null) { 
      writer.dispose(); 
     } 
     } 
} 
+0

Он работал просто отлично Спасибо :) – Neithalf

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