2

-編集- 参考までに.. スキャンした白黒ドキュメントをグレースケールまたはカラーに変換しています。

1)最初の解決策はうまくいきました。白黒(黒の背景、白のテキスト)を逆にしただけです。こちらも10分近くかかりました。
2)2番目の回答のJAIソリューションはうまくいきませんでした。ここに投稿する前に試してみました。

画像操作をうまく処理する無料または有料の他のライブラリを使用した人はいますか?

-オリジナル- Java ImageIO を使用して PNG をモノクロ TIFF に変換しようとしています。誰かがこれをやって運が良かったのですか?PNGからTIFFに変換するためにそれを手に入れました。読み込んだ BufferedImage (PNG) を変換する必要があるのか​​、TIFF を書き込んで変換する必要があるのか​​ わかりません。検索して検索しましたが、何も機能していないようですか?誰かがどこを見るべきか提案がありますか?

変換するコードは次のとおりです...

public static void test() throws IOException {

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

    File fInputFile = new File("I:/HPF/UU/" + fileName + inFileType);
    InputStream fis = new BufferedInputStream(new FileInputStream(fInputFile));
    ImageReaderSpi spi = new PNGImageReaderSpi();
    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("I:\\HPF\\UU\\" + 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();

}

圧縮を「CCITT T.6」タイプに変更しようとしましたが、それが必要なようですが、「 T6 圧縮ではサンプルあたりのビット数を 1 にする必要があります!」というエラーが表示されます。

4

2 に答える 2

3

ほとんどの場合、CCITT 圧縮で TIFF に保存する前に、このようなものを 1 ビットに変換する必要があります。

少し説明すると、他のビット深度から 1 ビットへの変換は簡単ではないことに注意してください。データ削減操作を行っており、出力品質が大きく異なるドメイン固有のソリューションが多数あります (ブラインドしきい値、適応しきい値、ディザリング、ローカルしきい値、グローバルしきい値など)。それらのいずれも、すべての画像タイプで特に優れているわけではありません (たとえば、適応しきい値はドキュメントにはかなり適していますが、写真にはお粗末です)。

于 2008-11-20T15:14:32.860 に答える
-2

台座が言ったように、変換を行う必要があります.Javaは魔法のように変換しません.PNG画像がすでに白黒の場合(コメントを見るとそうです)、しきい値を使用するのがおそらく最善です解決。

誰かが同じ問題を抱えているようです: HELP: how to compress the tiff。スレッドで解決策が提供されています(テストされていません!)。

于 2008-11-20T17:04:04.200 に答える