2015-12-25 3 views
-1

Добро пожаловать всем.Как преобразовать двоичное изображение в двоичный массив в java?

У меня есть двоичный файл, как это:

enter image description here

Я хочу представить или преобразовать это изображение или (любой двоичный файл) в двоичный массив из 0 и 1. распечатайте его значения (конечно, должно быть 0 и 1).

Моего кода я пытался, но он печатает недвоичное значение:

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]); 
     } 
    } 
} 

Любой помощь?

+1

Вы можете посмотреть: http://stackoverflow.com/questions/4989603/convert-an-image-to-binary-data-0s-and-1s-in-java – SomeDude

+1

Вы печатаете 'byte 'value (которое представляет собой целочисленное значение от -128 до 127 в Java), вам необходимо [преобразовать значение' byte' в его двоичное представление] (http://stackoverflow.com/questions/12310017/how-to -convert-a-byte-to-its-binary-string-presentation) – txtechhelp

+0

ну, проверьте это: 'System.out.println (Integer.toBinaryString (imageInByte [i]))' ... я пробовал эту строку кода для печати значений, но он печатает значения, подобные этому '1111 (строка) 0001 (строка)' .. это неверно, он должен представлять только один бит в строке ... есть ли что-то не так? –

ответ

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)]; 
} 
+0

, но 'imageInByte' - это jpg. это сжатый формат. Он не представляет изображение, только файл, который после декодирования представляет изображение – njzk2

+0

Сжатие используется для уменьшения размера изображения на жестком диске ... вы получаете одно и то же изображение с сжатием, но с более низким качеством. –

+0

из вашего вопроса, кажется, вы пытаетесь получить список из 0,1 значений, соответствующих черно-белому цвету каждого пикселя. не так ли? – njzk2

Смежные вопросы