2012-02-03 3 views
1

Я имею bufferd-изображения: т.е.как повернуть bufferd-изображение в java?

BufferedImage buffer = ImageIO.read(new File(file)); 

Теперь я хочу, чтобы повернуть его .. Так как я могу это сделать ??

Ранее я использовал формат изображения:

т.е.
Image image = ImageIO.read(new File(file)); 

и легко может вращать изображение, используя:

AffineTransform at = new AffineTransform(); 
    at.rotate(0.5 * angle * Math.PI, width/2, height/2); 

Но я не НЭ, как сделать это с bufferd образа ?? Вы можете мне помочь??

+0

AffineTransform будет нормально работать, если они используются на Graphics2D OBJE ct, полученный из вашего BufferedImage, но вы должны позаботиться о выборе правильного центра вращения и отсечения, если изображение не квадратное. –

ответ

4

Пример:

BufferedImage buffer = ImageIO.read(new File(file)); 
AffineTransform tx = new AffineTransform(); 
//tx.scale(scalex, scaley); 
//tx.shear(shiftx, shifty); 
//tx.translate(x, y); 
tx.rotate(radians, buffer.getWidth()/2, buffer.getHeight()/2); 

AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); 
buffer = op.filter(buffer, null); 

Смотрите также:

+1

Это будет корректно работать только для квадратных изображений. –

+0

В двух ссылках внизу показано, как, если необходимо, повторить приемку. Этот вопрос, вероятно, должен быть отмечен как дубликат. – kaliatech

+0

Вы можете добавить свой ответ к своим ссылкам: [affinetransform-truncates-image-what-do-i-wrong] (http://stackoverflow.com/questions/8719473/affinetransform-truncates-image-what-do-i- неправильно/872# 8720123) –

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