首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用BufferedImage剪切AffineTransform的问题

用BufferedImage剪切AffineTransform的问题
EN

Stack Overflow用户
提问于 2017-05-10 10:11:36
回答 1查看 251关注 0票数 0

我想在Java中用AffineTransform剪切我的图像。如果我这样做,我总是得到黑色的界限。

代码语言:javascript
复制
        for (File input : inputImages) {
        if (!input.getName().contains(".DS_Store")) {
            BufferedImage buffer = ImageIO.read(input);
            for (int i = 0; i <= 2; i++) {
                AffineTransform tx = new AffineTransform();
                tx.translate(buffer.getHeight() / 2, buffer.getWidth() / 2);
                tx.shear(0.3, 0);
                tx.translate(-buffer.getWidth() / 2, -buffer.getHeight() / 2);

                AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);

                BufferedImage newImage = new BufferedImage(buffer.getHeight(), buffer.getWidth(), buffer.getType());
                op.filter(buffer, newImage);

                File output = new File("output/" + FilenameUtils.getBaseName(input.getName()) + i + ".png");
                ImageIO.write(newImage, "png", output);
            }
        }
    }

有没有办法避免这些黑色的界限,得到一个白色或透明的背景?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-10 11:30:16

使用BufferedImage.TYPE_INT_ARGB作为图像类型创建透明图像

如果我使用TYPE_ARGB,输出图像是完全透明的。

做得更好

代码语言:javascript
复制
BufferedImage buffer = ImageIO.read(...);
AffineTransform tx = new AffineTransform();
tx.translate(buffer.getHeight() / 2, buffer.getWidth() / 2);
tx.shear(0.3, 0);
tx.translate(-buffer.getWidth() / 2, -buffer.getHeight() / 2);

AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);

BufferedImage newImage = new BufferedImage(buffer.getHeight(), buffer.getWidth(), BufferedImage.TYPE_INT_ARGB);
op.filter(buffer, newImage);

JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(newImage)));

如果您愿意,可以用默认颜色填充newImage

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43889478

复制
相关文章

相似问题

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