欢迎所有人。
我有一个像这样的二进制图像:
我想用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]);
}
}
}
任何帮助?
答案 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();
}