LINUX.ORG.RU
ФорумTalks

FileColor - программа для визуализирования содержимого бинарных файлов

 ,


2

2

Ссылка на код (Free Pascal): https://drive.google.com/open?id=0B21fx2NRbanxbVJ4QjQxQVVMcWs

Ссылка на бинарник(Linux 80386): https://drive.google.com/open?id=0B21fx2NRbanxNTMyT1ZmMXpjblk

Хочу поделиться своей студенческой подделкой FileColor. Программе скармливается некий произвольный(не в смысле случайный, а в смысле любой) файл размером от 2-х мегабайт и более. После этого выводятся первые 2 мегабайта онного файла(при желании можно перейти на следующие 2 мегабайта с помощью прокрутки). Создается окошко 1024 на 768 пикселей и 65536 цветами. В онном окошке цвет каждого пикселя определяется по двум байтам файла. То есть значения каждых двух байт отображаются через цвет соответствующего пикселя.

Теоретически если содержимое файло случайно, то должно получиться белое мессиво а-ля «телевизор потерял сигнал» (Вроде этого:https://i.imgur.com/6zBZaEx.jpg). Также подобный эффект дадут: хороший генератор псевдослучайных чисел, хороший алгоритм шифрования, хороший алгоритм сжатия.

В противном случае мы сможем визуально найти какие-то закономерности в картинке, какие-то паттерны. А люди, кстати говоря, по природе своей хорошо умеют находить визуальные паттерны.

Вот примеры картинок с паттернами полученными после анализа системного раздела и файла подкачки: https://imgur.com/a/UTMGn

Программа запускается из консоли и управление пролистыванием (клавиша Left - назад, любая другая - вперёд) от туда же. Для удобного просмотра советую сделать созданное программой графическое окошко «Поверх всех», а в сторонке от него поставить окошко консоли, которое потом сделать активным. Если достигнут конец файла, то программа выведет «синие жалюзи»(ХЗ почему возникает такой эффект, я специально его НЕ делал).

Программа сырая и далека от совершенства, приводится главным образом как Proof of concept. Плюс может быть вы захотите поделиться друг с другом полученными картинками =)

P.S.

Буду признателен если кто-нибудь объяснит мне почему программа выводит «синие жалюзи» при окончании файла.

Deleted

Последнее исправление: Deleted (всего исправлений: 3)

Ответ на: комментарий от Deleted

У Вас видимо графический экран оказывается по размеру равен рабочему столу. Когда я писал программу то у меня такой проблемы ни разу не возникало, так как у меня режим 1360x768 в то время как у окна 1024x768. А то что окно чёрное и трудноубиваемое это да. Я когда хочу убить окно нажимаю Alt-F2 и запускаю xkill.

Я вижу два выхода.

1.Повышение разрешения экрана.

2.Уменьшение разрешения окошка путём правки исходника.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от Deleted

Вы что, хотели дать программе путь к файлу в качестве аргумента при запуске? Если да, то должен Вас разочаровать, моя программа слишком тупая для этого. Она воспринимает только непосредственный ввод.

Deleted
()
Ответ на: комментарий от Deleted

В смысле запускаете программу из консоли, она требует ввести данные и Вы их вводите. А вот всякие попытки вроде ./FileColor arg уже дохлый номер

Deleted
()
Ответ на: комментарий от Deleted

Действительно, зачем? Признаю свою недоработку, исправил, файлы перезалил.

Deleted
()

Помню, я такое на паскале в школе писал. А вот выдача алгоритма, над которым я сейчас работаю. Никак не связано с твоей программкой, просто картинка повеселее.

Sadler ★★★
()
Ответ на: комментарий от Deleted

Использует ИИ для классификации видов женских глаз на фотках. Это выдача всевозможных классов глаз и их влияние на форму лица.

Sadler ★★★
()
Ответ на: комментарий от Deleted

Он предлагает его вводить руками, командную строку не читает, хотя это и не сложно. Например, для одного файла (выше давал пример):

  Assign(f,ParamStr(1)); Reset(f,2); r:=IOResult;
  if r<>0 then begin
    WriteLn('*** Error (',r,'): Can''t open file "',ParamStr(1),'"');
    Halt;
  end;

bormant ★★★★★
()
Ответ на: комментарий от Deleted

в своё время додумался до того, что IF это фактически частнй случай CASE

Да-да, скоро додумаетесь, что GoTo заменяет любые циклы, а там и до написания «программ на Фортране» при помощи любого языка программирования останется недалеко...

bormant ★★★★★
()
Ответ на: комментарий от bormant

Я это к тому, что я знаю об существовании оператора IF. Просто я эксперементирую с похожими языковыми конструкциями и пытаюсь выбрать те, которые мне показались наиболее удобными. Вы в исходнике собственно увидели мою попытку использовать CASE вместо IF.

Хотя я последнее время склоняюсь к тому, что в таких случах всё-таки следует использовать IF, ибо использование CASE приводит к созданию дополнительного END, а это в свою очередь увеличивает риск путаницы, иди разбирай кому чей END принадлежит. У меня из-за этого уже несколько раз программы не компилировались, ибо я по ошибке принимал CASE`овский END за BEGIN`овский END и наоборот.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.