如何在java中将二进制图像转换为二进制数组?

时间:2015-12-25 00:04:01

标签: java arrays image

欢迎所有人。

我有一个像这样的二进制图像:

enter image description here

我想用0和1的二进制数组表示或转换此图像或(任何二进制图像)然后打印其值(当然它应该是0' s和1&# 39; S)

我尝试了我的代码,但它打印了非二进制值:

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class PP {

    public static void main(String argv[]) throws IOException
    {
        File file = new File("binary.jpg");
        BufferedImage originalImage = ImageIO.read(file);
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        ImageIO.write(originalImage, "jpg", baos);
        byte[] imageInByte = baos.toByteArray();

        for(int i = 0; i < imageInByte.length; i++)
        {
            System.out.println(imageInByte[i]);
        }
    }
}

任何帮助?

2 个答案:

答案 0 :(得分:0)

也许我没有找到问题的最佳答案,但这些链接对我有帮助,所以我接受这个作为我问题的答案。

Convert an image to binary data (0s and 1s) in java

How to convert a byte to its binary string representation

修改

我工作得更多,最后找到了一种方法来在一行中表示二进制图像的每个位:

这是代码:

StringBuilder check = new StringBuilder();
for(int i = 0; i < imageInByte.length; i++)
{
    check.append(Integer.toBinaryString(imageInByte[i]));
}

String array[] = check.toString().split("");

for(int i = 0; i < array.length; i++){
    System.out.println(array[i)];
}

答案 1 :(得分:0)

此代码将图像转换为二进制字符串,其中包含0的白色和1的黑色像素。结果不是二维数组,而只是一个带有0/1值的长字符串。

    public static String getBinaryImage(BufferedImage image) {
    StringBuffer result = new StringBuffer();
    int width = image.getWidth();
    int height = image.getHeight();
    for (int i = 0; i < height; i++)
        for (int j = 0; j < width; j++)
            result.append(image.getRGB(j, i) == -1 ? 0 : 1);
    return result.toString();
}