JPEG - это сложный формат изображения.
Он не содержит необработанных пиксельных данных изображения, а вместо этого имеет заголовок, дополнительные метаданные и сжатые данные изображения.
Алгоритм его распаковки к необработанным значениям пикселей довольно сложно, но есть библиотеки, которые сделают эту работу за вас.
Вот краткое руководство: https://docs.oracle.com/javase/tutorial/2d/images/loadimage.html
Вот документация класса BufferedImage
, который будет содержать данные изображения: https://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html
Вам нужно будет использовать одну из функций getRGB
для доступа к необработанным данным пикселей. Убедитесь, что ваше изображение имеет 24-битный цветовой формат, если вы хотите, чтобы каждый компонент цвета занимал ровно 1 байт!
JPEG поддерживает другие форматы, такие как 32 и 16 бит!
В качестве альтернативы , сохраните изображение как 24-битный несжатый BMP. Файл будет намного больше, но его читать намного проще, поэтому вам не нужно использовать библиотеку. Просто пропустите заголовок , затем прочтите необработанные байты.
Еще более простой формат изображения для работы: PBM / PPM .