旋转带有白色背景的缓冲图像

我想将BufferedImage旋转一个弧度角。我用下面的代码。 matrixImage是一个整数矩阵,其中前景像素的值为1,而背景像素的值为0。新的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);
wsk520520 回答:旋转带有白色背景的缓冲图像

我使用以下代码进行了旋转

    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;

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

本文链接:https://www.f2er.com/2656806.html

大家都在问