Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 旋转具有白色背景的缓冲图像_Java_Bufferedimage_Affinetransform - Fatal编程技术网

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

Java 旋转具有白色背景的缓冲图像,java,bufferedimage,affinetransform,Java,Bufferedimage,Affinetransform,我想旋转缓冲图像,旋转角度以弧度为单位。我使用了以下代码matrixImage是一个整数矩阵,其中前景像素的值为1,而背景像素的值为0。新的buffereImage已正确旋转,但额外的边框为黑色。新图像比原始图像大,新部分为黑色。我希望新图像的所有背景像素都是白色的。我尝试了在上提出的解决方案,但我注意到在旋转过程中图像发生了变化 bufferedImage=matrix2BufferedImage(matrixImage); 仿射变换=新仿射变换(); transform.rotate(弧度,

我想旋转
缓冲图像
,旋转角度以弧度为单位。我使用了以下代码
matrixImage
是一个整数矩阵,其中前景像素的值为
1
,而背景像素的值为
0
。新的
buffereImage
已正确旋转,但额外的边框为黑色。新图像比原始图像大,新部分为黑色。我希望新图像的所有背景像素都是白色的。我尝试了在上提出的解决方案,但我注意到在旋转过程中图像发生了变化

bufferedImage=matrix2BufferedImage(matrixImage);
仿射变换=新仿射变换();
transform.rotate(弧度,buffereImage.getWidth()/2,buffereImage.getHeight()/2);
AffineTransformOp=新的AffineTransformOp(变换,AffineTransformOp.TYPE_双线性);
buffereImage=op.filter(buffereImage,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;

谢谢你给我推荐了正确的帖子

这回答了你的问题吗?也许这个解决方案也会有帮助: