Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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_Image_Resize_Crop_Binary Image - Fatal编程技术网

在Java中从二进制图像(布尔数组)裁剪

在Java中从二进制图像(布尔数组)裁剪,java,image,resize,crop,binary-image,Java,Image,Resize,Crop,Binary Image,我有一个2D布尔数组,它是一个分段图像,如下所示: 000000000000000000 000000011110000000 000001110111100000 000001111110100000 000000111101100000 000000111011000000 00111100 11101111 11111101 01111011 01110110 我想裁剪图片并将其调整为如下特定大小: 000000000000000000 00000001111

我有一个2D布尔数组,它是一个分段图像,如下所示:

 000000000000000000
 000000011110000000
 000001110111100000
 000001111110100000
 000000111101100000
 000000111011000000
 00111100
 11101111
 11111101
 01111011
 01110110
我想裁剪图片并将其调整为如下特定大小:

 000000000000000000
 000000011110000000
 000001110111100000
 000001111110100000
 000000111101100000
 000000111011000000
 00111100
 11101111
 11111101
 01111011
 01110110
我曾尝试使用BuffereImage保存它并使用getSubimage(),但无法正确设置边界

我也尝试过这种方法,其中我有缓冲图像的核心:

            int Width = buffer.getWidth();
            int Height = buffer.getHeight();
            int x1= (int) (core.getX()) - (Width/2);
            int y1= (int)(core.getY()) - (Height/2);
            buffer = buffer.getSubimage(x1, y1, Width, Height); 

如何裁剪并调整大小?

显示你尝试的代码,它可以帮助某人给你一个答案,如果你在图像中间凝视,GETSube图像函数的高度超过了图像的宽度和高度。如果宽度和高度从宽度/2和高度/2开始,则剩余的宽度和高度为宽度/2和高度/2,如果尺寸正确,该方法将起作用
    int [][] arr ={ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
     {0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0},
     {0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,0,0},
     {0,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0},
     {0,0,0,0,0,0,1,1,1,1,0,1,1,0,0,0,0,0},
     {0,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,0,0} };



    int lowHorizontal =arr[0].length; // give it length of columns "how many columns
    int highHorizontal =0;

    for(int i=0; i<arr.length; i++){
        for(int j=0; j<arr[0].length; j++){

            if(arr[i][j] == 1 ){
                if(lowHorizontal > j) 
                    lowHorizontal = j;
            }
        }
    }

    for(int i=arr.length-1; i>=0; i--){
        for(int j=arr[0].length-1; j>=0; j--){
            if(arr[i][j]==1){
                if(highHorizontal < j)
                    highHorizontal = j;
            }
        }
    }


    for(int i=0; i<arr.length; i++){
        for(int j=lowHorizontal; j<=highHorizontal; j++){
            System.out.print(arr[i][j] +" ");
        }
        System.out.println();
    }