1

あるディレクトリから別のディレクトリにtiff画像ファイルをコピーしています。ページの向きを修正するには、それらを時計回りに90度回転させる必要があります。画像は技術的な図面であり、すでに高品質ではないため、可能な限りロスレスの手法を使用する必要があります。毎日のバッチごとに処理する図面が数千になる可能性があるため、メモリ効率と時間効率の両方を考慮する必要があります。

私は画像処理をほとんど行っていないので、これに利用できるライブラリについてはあまり詳しくありません。読んだ後、JAIの「転置」を使うことを考えています。

http://docs.oracle.com/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/operator/TransposeDescriptor.html

このテクニックを使用したことのある人は、機能や効率の点で賛成または反対を勧めることができますか?

他のアプローチに関する推奨事項はありますか?

4

2 に答える 2

1

次のようなものを使用することを検討できます。

PlanarImage pi = PlanarImage.wrapRenderedImage(image);
        BufferedImage bi = pi.getAsBufferedImage();
        AffineTransform at = new AffineTransform();
        at.translate(-(image.getWidth() - image.getHeight()) / 2, (image.getWidth() - image.getHeight()) / 2);
        at.rotate(Math.toRadians(90),bi.getWidth()/2,bi.getHeight() / 2);
        AffineTransformOp opRotated = new AffineTransformOp(at,
                    AffineTransformOp.TYPE_BILINEAR);
        image = opRotated.filter(bi, null);
于 2012-10-25T13:45:46.490 に答える
1

さて、それらを90度だけ回転させたい場合は、画像の列を読み取り、行として書き込むだけで済みます。その時は全く損失はありません。

擬似コード:

for x in oldimage.width
    for y in oldimage.height
        newimage[y][x] = oldimage[x][y]
于 2012-10-25T13:51:11.473 に答える