2016-11-16 15 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

幅や高さが奇妙なことはありますか?そうであれば、2つの部門で丸め誤差が発生し、ピクセル単位で画像が縮小されます。それは国境の大きさですか? – Andrew

+0

私は質問を編集し、結果を何のimgを追加しました。 – ViktorG

+0

投稿した内容で回転していません... – Andrew

答えて

1

あなたはPI/2だけ回転した場合、新しいイメージ幅はソースの高さで、高さはソースの幅です。したがって:

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

が良いでしょう。

+0

これは良いアドバイスですが、OPがすべての辺の周りに黒い境界線を描き、画像が縮小する可能性があるので、質問に答えません。 – ControlAltDel

+0

ありがとうございます。しかし、周囲の黒い境界の問題はまだ残っています。 – ViktorG

関連する問題