首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >水平翻转BufferedImage

水平翻转BufferedImage
EN

Stack Overflow用户
提问于 2016-06-08 15:01:46
回答 2查看 2.3K关注 0票数 1

我使用下面的代码水平翻转图像。它可以工作,但是图像是水平翻转的,同时也是垂直的。右面图像,现在面对左边,但也是垂直翻转。我怎样才能阻止垂直翻转?代码:

代码语言:javascript
复制
public static BufferedImage createRotated( BufferedImage image)
    {
        AffineTransform at = AffineTransform.getRotateInstance(
            Math.PI, image.getWidth()/2, image.getHeight()/2 );
        return createTransformed(image, at);
    }

public static BufferedImage createTransformed(   BufferedImage image, AffineTransform at)
    {
        BufferedImage newImage = new BufferedImage(
            image.getWidth(), image.getHeight(),
            BufferedImage.TYPE_INT_ARGB);
        Graphics2D gg = newImage.createGraphics();
        gg.transform(at);
        gg.drawImage(image, 0, 0, null);
        gg.dispose();
        return newImage;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-08 15:13:15

因为你是在旋转180度的图像,而不是翻转它。

使用AffineTransform.getScaleInstance(-1, 1);代替。

编辑:从这里:https://stackoverflow.com/a/9559043/1542532

代码语言:javascript
复制
// Flip the image horizontally
tx = AffineTransform.getScaleInstance(-1, 1);
tx.translate(-image.getWidth(null), 0);

您还必须翻译图像,因为比例尺会将图像向左移动。

票数 2
EN

Stack Overflow用户

发布于 2016-06-08 15:34:21

我做了一些性能测试,这比使用AffineTransform更有效率

代码语言:javascript
复制
public static BufferedImage flipHoriz(BufferedImage image) {
    BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);
    Graphics2D gg = newImage.createGraphics();
    gg.drawImage(image, image.getHeight(), 0, -image.getWidth(), image.getHeight(), null);
    gg.dispose();
    return newImage;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37706228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档