BufferedImageの一部をコピーしたいが、コピーフォームは単純な正方形ではなく、ある角度で回転した正方形である。出力として、幅と高さを持つBufferedImageを取得するには、正方形のサイズと内容を初期画像からコピーし、正方形のコピーが最初の画像と交差するようにします。Javaを使用して回転した正方形のBufferedImageパーツをコピーする方法は?
これを行う最も簡単な方法は何ですか?
BufferedImageの一部をコピーしたいが、コピーフォームは単純な正方形ではなく、ある角度で回転した正方形である。出力として、幅と高さを持つBufferedImageを取得するには、正方形のサイズと内容を初期画像からコピーし、正方形のコピーが最初の画像と交差するようにします。Javaを使用して回転した正方形のBufferedImageパーツをコピーする方法は?
これを行う最も簡単な方法は何ですか?
単純なアプローチは、所望の大きさの新しいイメージを作成することで、選択された正方形の領域に応じて、この画像の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;
}
Thx、試してみよう – user3231055
私はdownvoterではありません。私は質問が合法だと思うが、それはいくつかの詳細と改善することができます。特に:)どのように "回転された正方形"与えられますか? Center + Angle + Sizeとして指定されていますか、別の方法で指定されていますか? – Marco13
すべてのアプローチが変換可能であるため、どのように与えられるかは関係ありません。あなたがCenter + Angle + Sizeのように考えてみてください。 – user3231055