2014-03-22 2 views
0

Я хочу, чтобы прочитать данные из файла .jpg (заголовок, информации DCT, Хаффман таблицы, таблицы квантования, ...)Чтение данных из изображения JPEG

Я попробовал этот кусок кода, но я не уверен, что это правильно (на самом деле я не знаю, что получится!)

byte[] my = new byte[5]; 
    try 
    { 
     RandomAccessFile file = new RandomAccessFile("001.jpg", "rw"); 
     file.read(my, 0, 5); 
     for(int i = 0; i < my.length; i++) 
      System.out.printf("%s\n", my[i]); 

    } 
    catch (IOException e) 
    { 

    } 

Этот код просто выводит некоторое число (это должно быть начало изображения)

+0

Существуют стандартные библиотеки JPEG для всех языков/платформ. Вы пробовали один? Посмотрите http://docs.oracle.com/javase/tutorial/2d/images/index.html и http://stackoverflow.com/q/603283/10468 и http://stackoverflow.com/q/8310680/ 10468 – DarenW

+0

Причина Я хочу манипулировать информацией о пикселях, не могу использовать библиотеки – Branky

+0

Этот код должен печатать первые 5 байтов файла, и это именно то, что он делает. Я не уверен, в чем проблема. – Boann

ответ

2

Существует много работы между чтением «файла JPEG» и получением данных пикселя.

Если вам действительно интересно, я предлагаю начать с одной из многих программ дампа JPEG, которые находятся там, чтобы узнать о структуре потока JPEG. Поток JPEG состоит из последовательности маркеров.

Сжатые данные находятся в сканировании. В прогрессивном JPEG необходимо объединить несколько сканирований.

Базовая последовательность декодирования - длина пробега/huffman, DCT, выборка, преобразование в RGB.

Это много кода, чтобы добраться до этого момента.

+0

Можно ли предложить простую программу, как вы упомянули? – Branky

+1

http://www.colosseumbuilders.com/sourcecode/sourcecode/imagelib403.zip – user3344003

+0

https://en.wikipedia.org/wiki/JPEG https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format http: // www .fileformat.info/format/jpeg/egff.htm http://www.w3.org/Graphics/JPEG/jfif3.pdf – jwenting

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