2013-08-08 3 views
0

안녕하세요. 내 png 파일을 tiff로 변환해야하는 다음 스 니펫에서 작업 중입니다.PNG를 TIFF-Java로 변환하는 중 오류가 발생했습니다.

  String fileName = "4848970_1"; 
      // String fileName = "color"; 
      String inFileType = ".PNG"; 
      String outFileType = ".TIFF"; 

      File fInputFile = new File("C:\\Users\\abc\\Downloads\\image2.png"); 
      InputStream fis = new BufferedInputStream(new FileInputStream(fInputFile)); 
      ImageReaderSpi spi = new PNMImageReaderSpi(); 
      ImageReader reader = spi.createReaderInstance(); 
      ImageInputStream iis = ImageIO.createImageInputStream(fis); 
      reader.setInput(iis, true); 
      BufferedImage bi = reader.read(0); 

      int[] xi = bi.getSampleModel().getSampleSize(); 

      for (int i : xi) { 
       System.out.println("bitsize " + i); 
      } 

      ImageWriterSpi tiffspi = new TIFFImageWriterSpi(); 
      TIFFImageWriter writer = (TIFFImageWriter) tiffspi.createWriterInstance(); 

      // TIFFImageWriteParam param = (TIFFImageWriteParam) writer.getDefaultWriteParam(); 
      TIFFImageWriteParam param = new TIFFImageWriteParam(Locale.US); 
      String[] strings = param.getCompressionTypes(); 
      for (String string : strings) { 
       System.out.println(string); 
      } 

      //param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); 
      //param.setCompressionType("LZW"); 

      File fOutputFile = new File("C:\\Users\\abc\\Downloads\\" + fileName + outFileType); 
      OutputStream fos = new BufferedOutputStream(new FileOutputStream(fOutputFile)); 
      ImageOutputStream ios = ImageIO.createImageOutputStream(fos); 

      writer.setOutput(ios); 
      writer.write(null, new IIOImage(bi, null, null), param); 

      ios.flush(); 
      writer.dispose(); 
      ios.close(); 

그러나이 오류 다음 나에게주는

Exception in thread "main" java.lang.RuntimeException: What in the stream isn't a PNM image. 
    at com.sun.media.imageioimpl.plugins.pnm.PNMImageReader.readHeader(PNMImageReader.java:187) 
    at com.sun.media.imageioimpl.plugins.pnm.PNMImageReader.read(PNMImageReader.java:301) 
    at javax.imageio.ImageReader.read(Unknown Source) 
    at com.imageconv.TiffImage.main(TiffImage.java:40) 

가 그게 그것 PNG 파일을 읽을 수 없습니다 또는이 아닌 PNG의 file.Am 내가 잘못 어디로 인식?

답변

2

PNM 이미지 인 것처럼 PNG 이미지를 읽으려고합니다. 이 두 파일 형식에는 공통점이 없습니다. 그러므로 오류.

+0

그래서 어떻게하면 PNG 파일을 읽고 변환 할 수있는 프로그램을 조정할 수 있습니까? – Nilesh

+1

ImageIO.read를 사용하여 PNG 이미지를 직접 읽을 수 있습니다. http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html – Joni

관련 문제