2016-08-06 4 views
-1

BufferedImageの一部をコピーしたいが、コピーフォームは単純な正方形ではなく、ある角度で回転した正方形である。出力として、幅と高さを持つBufferedImageを取得するには、正方形のサイズと内容を初期画像からコピーし、正方形のコピーが最初の画像と交差するようにします。Javaを使用して回転した正方形のBufferedImageパーツをコピーする方法は?

これを行う最も簡単な方法は何ですか?

+0

私はdownvoterではありません。私は質問が合法だと思うが、それはいくつかの詳細と改善することができます。特に:)どのように "回転された正方形"与えられますか? Center + Angle + Sizeとして指定されていますか、別の方法で指定されていますか? – Marco13

+0

すべてのアプローチが変換可能であるため、どのように与えられるかは関係ありません。あなたがCenter + Angle + Sizeのように考えてみてください。 – user3231055

答えて

-1

単純なアプローチは、所望の大きさの新しいイメージを作成することで、選択された正方形の領域に応じて、この画像のGraphics2Dを変換し、その後単にこのグラフィックに原画像をペイント:(

private static BufferedImage extractRegion(
    BufferedImage source, Point2D center, Point2D size, double angleRad) 
{ 
    int w = (int)size.getX(); 
    int h = (int)size.getY(); 
    BufferedImage result = 
     new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g = result.createGraphics(); 
    g.setRenderingHint(
     RenderingHints.KEY_INTERPOLATION, 
     RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
    g.translate(size.getX()/2, size.getY()/2); 
    g.rotate(angleRad); 
    g.translate(-center.getX(), -center.getY()); 
    g.drawImage(source, 0, 0, null); 
    g.dispose(); 
    return result; 

} 
+0

Thx、試してみよう – user3231055

関連する問題