gpt4 book ai didi

java - 旋转具有白色背景的缓冲图像

转载 作者:行者123 更新时间:2023-12-01 17:59:46 25 4
gpt4 key购买 nike

我想旋转 BufferedImage以弧度为单位的角度。我使用了以下代码。 matrixImage是一个整数矩阵,其中前景像素有 1作为值,而背景像素有 0作为值(value)。新BufferedImage已正确旋转,但多余的边框是黑色的。新图像比原始图像更大,并且新部分是黑色的。我希望新图像的所有背景像素都是白色的。我尝试了 Rotate BufferedImage and remove black bound 中提出的解决方案,但我注意到在旋转过程中图像发生了变化。

bufferedImage = matrix2BufferedImage(matrixImage);
AffineTransform transform = new AffineTransform();
transform.rotate(radians, bufferedImage.getWidth() / 2, bufferedImage.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
bufferedImage = op.filter(bufferedImage, null);

最佳答案

我使用以下代码解决了旋转问题

    private BufferedImage rotateImage(BufferedImage sourceImage, double angle) {
AffineTransform transform = new AffineTransform();
transform.rotate(angle, sourceImage.getWidth() / 2, sourceImage.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
BufferedImage destImage = op.filter(sourceImage, null);

Graphics2D g2d = destImage.createGraphics();

g2d.drawRenderedImage(sourceImage, transform);

g2d.dispose();
return destImage;
}

然后,我使用以下代码对缓冲图像进行二值化

            int value=binarized.getRGB(x,y);
if(value==0)
value=-1;
output[y][x] = ((0xFFFFFF & value) == 0xFFFFFF) ? (byte) 0 : 1;

感谢您向我推荐正确的帖子!

关于java - 旋转具有白色背景的缓冲图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60657898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com