2016-11-16 3 views
-1

Я пытаюсь повернуть BufferedImage, и он работает, но повернутое изображение имеет черную рамку вокруг некоторых сторон, и я не знаю, почему ... Я также чувствую, что он становится меньше после поворота.Вращение BufferedImage дает ему черную рамку

import java.awt.image.BufferedImage; 
import java.awt.geom.AffineTransform; 
import java.awt.image.AffineTransformOp; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 


public class example { 

    static void main(String[] args) throws IOException { 

     BufferedImage imgResc = ImageIO.read(new File("landscape.jpg"));   

     AffineTransform tx = new AffineTransform(); 
     tx.rotate(Math.PI/2, imgResc.getWidth()/2, imgResc.getHeight()/2);//(radian,arbit_X,arbit_Y) 
     AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); 
     BufferedImage rotatedImage = new BufferedImage(imgResc.getHeight(),imgResc.getWidth(),imgResc.getType()); 
     op.filter(imgResc, rotatedImage); 
     ImageIO.write(rotatedImage, "JPEG", new File("rotated_90_right.jpg")); 
    } 
} 

Выше приведен фрагмент кода для поворота изображения, как я нашел его онлайн.

Помощь будет замечательной!

EDIT:

Это, как он должен выглядеть и что я получаю после поворота: (1920 х 1200)

enter image description here

+0

Возможно ли, что ваша ширина или высота нечетные? Если это так, то ваши деления на два будут вводить ошибку округления, уменьшая изображение на пиксель. Это размер границы? – Andrew

+0

Я отредактировал вопрос и добавил img того, что результат. – ViktorG

+0

Он также не вращается в том, что вы опубликовали ... – Andrew

ответ

1

Если повернуть на PI/2, то новый образ имеет ширину высоты источника и высоту ширины источника, поэтому:

BufferedImage rotatedImage = new BufferedImage(imgResc.getHeight(), 
               imgResc.getWidth(), 
               imgResc.getType()); 

будет лучше.

+0

Это хороший совет, но он не отвечает на заданный вопрос, поскольку ОП описал черную рамку со всех сторон, а изображение, возможно, сжалось. – ControlAltDel

+0

Вы правы, спасибо. Проблема с черной рамкой вокруг все еще остается. – ViktorG

Смежные вопросы