2016-12-27 57 views
0

私はtiffファイルを持っており、ページ数を取得したいと考えています。私はthisの質問に続きましたが、私はページ数を得ることができません。エラーはなく、問題をデバッグしようとしましたが原因を見つけることができません。.tifファイルのページ数を取得できません

import java.io.File; 
import java.io.IOException; 
import org.apache.commons.io.FileUtils; 
import javax.swing.JOptionPane; 
import java.io.File; 
import java.io.IOException; 
import java.awt.Frame; 
import java.awt.image.RenderedImage; 
import javax.media.jai.widget.ScrollingImagePanel; 
import javax.media.jai.NullOpImage; 
import javax.media.jai.OpImage; 
import com.sun.media.jai.codec.SeekableStream; 
import com.sun.media.jai.codec.FileSeekableStream; 
import com.sun.media.jai.codec.TIFFDecodeParam; 
import com.sun.media.jai.codec.ImageDecoder; 
import com.sun.media.jai.codec.ImageCodec; 




public class FileSearch { 

    int sizeOfFile = Integer.parseInt((JOptionPane.showInputDialog(null,"Enter Size: "))); 

    public void findFiles(File root) throws IOException { 

     File[] listOfFiles = root.listFiles(); 
     for (int i = 0; i < listOfFiles.length; i++) { 
      String iName = listOfFiles[i].getName(); 
      if (listOfFiles[i].isFile() && iName.endsWith(".tif")) { 

       long fileSize = listOfFiles[i].length(); 

       if (fileSize <= (sizeOfFile*1000)) { 
        File file = new File("\\\\server\\folder1\\TestFiles\\" + listOfFiles[i].getName()); 

        if (file.exists()) { 
         System.out.println(file.getName() + " already exists"); 
        } else { 
         File folder = new File("\\\\server\\folder1\\TestFiles\\\\Files by Size\\Files of size " + ((sizeOfFile*1000)/1000) + " KB"); 
         if (!folder.exists()) { 
          if (folder.mkdir()) { 
           System.out.println("Folder : " + folder.getAbsolutePath()); 
          } 
         } 

         /* Start here */ 

         SeekableStream s = new FileSeekableStream(new File("C:\\Users\\username\\Desktop\\file.tif")); //using this file as test 

         TIFFDecodeParam param = null; 

         ImageDecoder dec = ImageCodec.createImageDecoder(".tif", s, param); 

         System.out.println("Number of images in this TIFF: " + 
              dec.getNumPages()); 
         JOptionPane.showMessageDialog(null, dec.getNumPages()); 
/* END HERE */ 

         try{ 
          System.out.println(listOfFiles[i].getName() + " | " + FileUtils.byteCountToDisplaySize(fileSize)); 
          FileUtils.copyFileToDirectory(listOfFiles[i], folder);       
         } 
         catch(IOException e){ 
          System.out.println("Same files"); 
          return; 
         } 
        } 
       } 
      } 

      else if (listOfFiles[i].isDirectory()) { 
       findFiles(listOfFiles[i]); 
      } 
     } 
    } 
} 

私は何が違うの結果を見るためにImageDecoder dec = ImageCodec.createImageDecoder(".tif", s, param);ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param);を変更しました。私の質問に

+0

TO STARTの間に起こるのか?何もない?それは現地の日付で動作しますか? – Zaknafein

+0

@ Zaknafein、私は私のポストで言ったように、エラーはありません。 – Maddy

+1

あなたのコードは私のものと同じです(私の作品は "tiff"ではなく ".tif"ではなく)。エラーメッセージは表示されませんでしたが、どの出力が得られたかは分かりませんでした。 – Duston

答えて

1

回答:

変更以下ENDセクション

RenderedImage renderedImage[], page; 
File tiffFile = new File("C:\\Users\\username\\Desktop\\file.tif"); 

SeekableStream seekableStream = new FileSeekableStream(tiffFile); 
ImageDecoder imageDecoder = ImageCodec.createImageDecoder("tiff",seekableStream, null); 
renderedImage = new RenderedImage[imageDecoder.getNumPages()]; 

int tifPageCount = 0; 
for (int k = 0; k < imageDecoder.getNumPages(); k++) { 
    renderedImage[k] = imageDecoder.decodeAsRenderedImage(k); 
    tifPageCount++; 
} 
関連する問題