Java вращение ImageBuffer не удается

Я пытаюсь повернуть экземпляр BufferImage с именем pic, когда я пытаюсь сделать это, он изменяет размеры и искажает и обрезает изображение, любой совет, чтобы заставить его работать должным образом

public void rotate(double rads){
    AffineTransform tx = new AffineTransform();
    tx.rotate(rads,pic.getWidth()/2,pic.getHeight()/2);
    AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
    pic = op.filter(pic, null);
}

Когда он у меня, поверните на 90 & # x2DA; он работает нормально, так что мне интересно, проблема в том, что это форма изображения?

 Andrew Thompson18 мая 2012 г., 01:48
Для лучшей помощи, отправьтеSSCCE.
 davidfrancis18 мая 2012 г., 00:22
Ваше изображение квадратное? Если вы повернете прямоугольник на 45 градусов (скажем), тогда ему нужен больший прямоугольник, чем прежде, чтобы его содержать ...
 Aaron18 мая 2012 г., 00:58
как сделать так, чтобы он содержался в большем прямоугольнике, чем на картинке?

Ответы на вопрос(1)

Решение Вопроса

AffineTransformВы можете выровнять изображение, используя что-то вроде этого:

private BufferedImage getImage(String name) {
    BufferedImage image;
    try {
        image = ImageIO.read(new File(name));
    } catch (IOException ioe) {
        return errorImage;
    }
    int w = image.getWidth();
    int h = image.getHeight();
    int max = Math.max(w, h);
    max = (int) Math.sqrt(2 * max * max);
    BufferedImage square = new BufferedImage(
            max, max, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = square.createGraphics();
    g2d.setRenderingHint(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.drawImage(image, (max - w) / 2, (max - h) / 2, null);
    g2d.dispose();
    return square;
}
 18 мая 2012 г., 01:54
Метод выше был использован в том же контексте,AffineTransformOp, Решает ли это проблему? Если нет, пожалуйста, отредактируйте свой вопрос, чтобы включитьsscce которая демонстрирует проблему, которую вы описываете. этоexample иллюстрирует использование широко доступного изображения.
 Aaron18 мая 2012 г., 01:43
Я на самом деле пытаюсь использовать прямоугольное изображение, которое в 2 раза шире и длиннее, совет?

Ваш ответ на вопрос