2013-05-28 2 views
0

파일을 변경 한 후에 파일을 바꾸려고합니다. 문제는 원래 파일을 바꾸지 않고 새 파일을 만들 수 있다는 것입니다. 다음은 내가 사용하고있는 코드입니다.FileImageOutputStream을 사용하여 기존 파일 바꾸기

private static void resize(String folder, String filename) 
     throws IOException { 

    BufferedImage imagem = ImageIO.read(new File(folder + "/" + filename)); 

    float quality = (float) 0.25; 

    ImageWriter writer = (ImageWriter) ImageIO.getImageWritersByFormatName(
      "jpeg").next(); 
    ImageWriteParam iwp = writer.getDefaultWriteParam(); 
    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); 
    iwp.setCompressionQuality(quality); 
    File file = new File(folder + "/" + filename); 
    FileImageOutputStream output = new FileImageOutputStream(file); 
    writer.setOutput(output); 
    IIOImage image = new IIOImage(imagem, null, null); 
    writer.write(null, image, iwp); 
    writer.dispose(); 
} 

답변

0

내 컴퓨터 (자바 7 사용)에서는 원본 파일을 올바르게 대체했습니다. 파일에 올바른 쓰기 권한이 있는지 확인하십시오.

+0

현재 Windows에서이 파일을 사용하고 있는데 사용 권한이 작동하지 않는 것 같습니다. S – user2430343

+0

@ user2430343 다른 파일에 출력을 저장하려고 다시 시도했습니다. 대체 된 크기와 다른 크기입니다. 나는 606KB의 이미지로 노력했다. 교체 할 때 여전히 606KB이지만 열면 품질이 떨어집니다. 출력을 다른 파일에 저장하면 39KB이고 606KB로 된 것보다 압축률이 높습니다. 606KB – Evans

+0

그냥 607KB 였지만 제대로 작동했지만 대체하지 않으면 28kb의 결과가 나타납니다. 그 일이 어떻게 일어 났는지 설명해 주시겠습니까? Thx in advance – user2430343

관련 문제