你如何在java中转换2D图像?

时间:2014-04-28 22:25:14

标签: java arrays image multidimensional-array shift

调用shift通过保存位7,将位0-6向左移位一位,并将位0设置为先前保存的位7值,找到隐藏在图像数据中的图像。

这意味着什么?

for (int row = 0; row < height; row++) {
            for (int col = 0; col < width; col++) {
                int pixel = image[row][col];
                pixel = (pixel & 0b01111111) << 1;
                image[row][col] = pixel;

这是我到目前为止所做的,它会移动,但我不知道如何将位0置于之前保存的第7位值。

1 个答案:

答案 0 :(得分:0)

让我们说你有7位:1001110 首先你保存第7:1位 然后移位0-6位:0011100 将位0设置为保存的位7:0011101

如果你比较输入和输出,你就可以有效地移动整个位组(包括环绕)。

我不确定问题的具体细节,但请将您的位视为像素。 0表示那里没有像素,1表示存在。通过移动位(图像的表示),您也可以移动图像。

1001110 //位数据 。 ... //让我们说这是你的形象   ...... //移位图像

示例代码:

byte[] arr = {0,1,0,1,1,0,1};
byte temp = arr[0];
int i;
for (i = 0; i < arr.length-1; i++) {
    arr[i] = arr[i+1];
}
arr[i] = temp;

编辑:

根据您的示例,如果要将第0位设置为前8位,您可以执行以下操作:

int temp = (pixel&(1<<8))>>8;
pixel = (pixel & 0b011111111) << 1;
if (temp==1) pixel |= 0b000000001;