Проблемы с поворотом изображения TIFF - PullRequest
1 голос
/ 23 ноября 2011

Я нашел код для поворота изображения tiff по часовой стрелке, но это занимает так много времени и даже прокрутка изображения в jscrollpanel также очень медленная.

1. Так есть ли простой способ повернуть изображение TIFF или

2. В приведенном ниже коде требуется любая настройка для быстрого его поворота.

            ReadableByteChannel rBytChnl = Channels.newChannel(url);
        ByteBuffer buffer = ByteBuffer.allocate(4096 * 1024);
        rBytChnl.read(buffer);
        byte[] data = buffer.array();
        SeekableStream stream = new ByteArraySeekableStream(data);
        ParameterBlock pb = new ParameterBlock();
        pb.add(stream);
        RenderedOp op = JAI.create("tiff", pb);
        TransposeType type = TransposeDescriptor.ROTATE_90;
        ParameterBlock pb1 = new ParameterBlock();
        pb1.addSource(op);
        pb1.add(type);
        pb1.add(new InterpolationBilinear());
        image = JAI.create("transpose", pb1, null);

1 Ответ

3 голосов
/ 24 ноября 2011

Я настроил аффинное преобразование в соответствии с моими потребностями, и оно работает нормально.Это только для вращения на 90 градусов по часовой стрелке и для других нужд соответственно измените код.

       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);
...