Как получить общее количество страниц из Tiff - PullRequest
0 голосов
/ 01 февраля 2019

Я начал создавать новый метод в нашем проекте, чтобы возвращать общее количество страниц.Мы используем TIFFTweaker, на который можно ссылаться по следующему URL - https://github.com/dragon66/icafe/blob/master/src/com/icafe4j/image/tiff/TIFFTweaker.java

В этом классе я нашел метод TIFFTweaker.getPageCount(), который выглядит так, как будто ему нужен объект RandomAccessInputStream для их getPageCount().

Я пытался добраться от моего файлового объекта до того, что они ищут.

Каков наилучший способ приблизиться к этому и вернуть общее количество страниц из tiff?

Я просмотрел некоторые документы Java, stackOverflow и некоторые случайные блоги, но, похоже, не понялКак получить из файлового объекта randomaccessinputstream.

@Override
public Integer totalPages(File file) {

Integer numberOfPages = 0;
try{
      //TIFFTweaker.getPageCount(); - How to pass the file and get the count? Problem is type is a random access input stream and I have a file type

       FileInputStream fileInputStream = new FileInputStream(file);
       String absolutePath = file.getAbsolutePath();

       // return TIFFTweaker.getPageCount();

  }catch(IOException e){
        log.error("Error with Tiff File" + e);
   }

return null;

}

Я ожидаю возвращенное числовое значение, которое представляет общее количество страниц в файле TIFF, который я передаю.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вот что я получил на работу.@roeygol, спасибо за ваш ответ.Я пытался импортировать зависимость Maven, но в этой версии что-то сломалось.Вот что я придумал.

    @Override
    public Integer totalPages(File file) {

        try(
            InputStream fis = new FileInputStream(file);
            RandomAccessInputStream randomAccessInputStream = new 
            FileCacheRandomAccessInputStream(fis)
        ){

           return TIFFTweaker.getPageCount(randomAccessInputStream);

       }catch(IOException e){


            log.error("Error with Tiff File" + e);
        }

        return null;

    }
0 голосов
/ 01 февраля 2019

Попробуйте использовать этот код:

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 MultiPageRead extends Frame {

    ScrollingImagePanel panel;

    public MultiPageRead(String filename) throws IOException {

        setTitle("Multi page TIFF Reader");

        File file = new File(filename);
        SeekableStream s = new FileSeekableStream(file);

        TIFFDecodeParam param = null;

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

        System.out.println("Number of images in this TIFF: " +
                           dec.getNumPages()); //<< use this function to get the number of pages of your TIFF

        // Which of the multiple images in the TIFF file do we want to load
        // 0 refers to the first, 1 to the second and so on.
        int imageToLoad = 0;

        RenderedImage op =
            new NullOpImage(dec.decodeAsRenderedImage(imageToLoad),
                            null,
                            OpImage.OP_IO_BOUND,
                            null);

        // Display the original in a 800x800 scrolling window
        panel = new ScrollingImagePanel(op, 800, 800);
        add(panel);
    }

    public static void main(String [] args) {

        String filename = args[0];

        try {
            MultiPageRead window = new MultiPageRead(filename);
            window.pack();
            window.show();
        } catch (java.io.IOException ioe) {
            System.out.println(ioe);
        }
    }
}

Для этого кода необходимо использовать jai-кодек: https://mvnrepository.com/artifact/com.sun.media/jai-codec/1.1.3

Основная используемая функция - getNumPages()

...