1

画像を回転させる方法を作成しました(ほとんどのコードは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;
}
4

0 に答える 0