2016-10-20 4 views
1

ImageIO 클래스를 사용하여 그림을 저장하려고했지만 그림 크기가 작아지는 문제를 발견했습니다. 코드는 다음과 같다 :ImageIO 이미지 저장 및 크기가 작아졌습니다.

public class SeamCarving { 
    static String path="C:/Users/lenovo/Desktop/h4/01.jpg"; 
    public static void main(String[] args)throws Exception { 
     File file1=new File(path); 
     System.out.println(file1.length()); 
     BufferedImage image=ImageIO.read(file1); 
     File file2=new File("d:/02.jpg"); 
     ImageIO.write(image, "jpg",file2); 
     image.flush(); 
     System.out.println(file2.length()); 
    } 
} 

수술 후, 나는 크기가 4,788,268 및 사진의 크기가 작은 이유 1529534.이 그래서 내가 이해할 수없는 것입니다 발견했다.

답변

0

당신은 FileInputStreamFileOutputStream 클래스와 함께 할 시도 할 수 있습니다 : 예, 사진의 크기를 변경하지 않습니다이 방법을 알고

public class SeamCarving { 
    static String pathFrom = "C:/Users/lenovo/Desktop/h4/01.jpg"; 
    static String pathTo = "d:/02.jpg"; 

    public static void main(String[] args) throws Exception { 
     File file1 = new File(pathFrom); 
     File file2 = new File(pathTo); 

     FileInputStream fis = new FileInputStream(pathFrom); 
     FileOutputStream fos = new FileOutputStream(pathTo); 

     System.out.println(file1.length()); 
     int buffSize; 
     byte[] buffer = new byte[1024]; 
     while ((buffSize = fis.read(buffer)) > 0) { 
      fos.write(buffer, 0, buffSize); 
     } 
     System.out.println(file2.length()); 

     fis.close(); 
     fos.close(); 
    } 
} 
+0

하지만 내가 쓰고 있어요 때문에 내가의 ImageIO에서 클래스를 사용할 필요가 이음새 조각 알고리즘은 픽셀의 작동과 관련이 있습니다. 그래서 그림을 저장하려면이 방법을 사용해야합니다. – OverDrive

+0

본 다음 [이 게시물] (http://stackoverflow.com/questions/29273672/image-size-getting-decreased-after-converting-it-into-byte-using-bufferedimage)을 읽어주십시오. 출력 이미지는 0.75 비율로 압축되므로 크기가 그에 따라 줄어 듭니다. – DimaSan

+0

아, 알겠습니다. 답변 주셔서 감사합니다! – OverDrive