Если вы открываете файл только для отображения байтов, и вам не нужно манипулировать им как изображением, то это простой процесс открытия файла, как и любого другого, чтения числа байтов по X и последующей итерации по ним. , Что-то вроде:
File.open('path/to/image.file', 'rb') do |fi|
byte_block = fi.read(1024)
byte_block.each_byte do |b|
puts b.asc
end
end
Это будет просто выводить байты в виде десятичной дроби. Вы захотите взглянуть на байтовые значения и создать значения RGB для определения цветов, поэтому, возможно, использование each_slice(3)
и чтение с кратностью 3 байта помогут.
Различные форматы изображений содержат различные блоки заголовка и конца, используемые для хранения информации об изображении, формате данных и информации EXIF для устройства захвата, в зависимости от типа. Вероятно, что-то с несжатыми файлами было бы хорошо, если вы собираетесь читать файл и выводить байты напрямую, например, несжатый TIFF. Как только вы решили, что вы можете перейти в файл, чтобы пропустить заголовки, если хотите, или просто прочитать их тоже, чтобы увидеть или узнать, что в них. Страница Форматы графических файлов из Википедии - хорошая отправная точка для получения дополнительной информации о различных доступных форматах.
Если вы хотите видеть только данные изображения, то поможет одна из библиотек высокого уровня, поскольку у них есть интерфейсы для захвата определенных частей изображения. Но на самом деле доступ к байтам не сложен, и при этом он не прыгает.
Если вы хотите узнать больше о блоке EXIF, который используется для описания множества форматов Jpeg и TIFF различных поставщиков ExifTool может быть полезен. Он написан на Perl, поэтому вы можете посмотреть, как работает код. Документы прекрасно показывают блоки заголовка и поля, и вы можете читать / записывать значения с помощью приложения.
Я в процессе тестирования нового маршрутизатора, поэтому у меня не было возможности протестировать этот код, но он должен быть близко. Я проверю это немного и обновлю ответ, если это не сработало.