画像を回転させる方法を作成しました(ほとんどのコードはstackoverflowの素晴らしい回答にあります)。次に、画像を切り取る必要があります。(1) アウトラインで、(2) 画像をインライン化します (境界線は表示されません)。しかし、その方法がわかりません。ここのすべての回答にサンプルが見つかりませんでした。どうにかして、回転した画像から座標 (4 つのエッジ ポイントすべて) を取得することはできますか? 手伝ってくれてありがとう。
public static BufferedImage rotateTest(BufferedImage image, double degrees) {
// --- get image size
int w = image.getWidth();
int h = image.getHeight();
// --- need longest side
int m = w;
if (h > w) {
m = h;
}
// --- double length for rotating
m = m * 2;
// --- rotate component
BufferedImage result = new BufferedImage(m, m, image.getType());
Graphics2D g = (Graphics2D) result.getGraphics();
// --- create transform
AffineTransform transformer = new AffineTransform();
// --- translate it to the center of the component
transformer.translate(result.getWidth() / 2, result.getHeight() / 2);
// --- do the actual rotation
transformer.rotate(Math.toRadians(degrees));
// --- translate the object so that you rotate it around the center
transformer.translate(-image.getWidth() / 2, -image.getHeight() / 2);
// --- anti aliasing
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// --- drawing
g.drawImage(image, transformer, null);
// --- done
g.dispose();
// --- cut to outline
// --- run out
return result;
}