Czy istnieje program dla systemu Linux, który może wyświetlać surowe dane binarne?
Każdy bajt w moich plikach binarnych reprezentuje piksel, więc byłoby bardzo przydatne, gdyby coś takiego istniało tam, gdzie mógłbym powiedzieć
program_name --input=dat001.bin --width=200 --height=100
i wyświetlałoby piksele.
Zastanawiam się, czy można do tego użyć gnuplot ...?
hd
do sformatowania. Następnie poprosisz o obejrzenie obrazu. Jeśli jest to obraz, to będzie on w formacie obrazu (takim jak bmp), który przynajmniej będzie miał nagłówek, który identyfikuje format, szerokość, wysokość, głębię kolorów, a może także mieć paletę kolorów przywiązany.Odpowiedzi:
Aby zobaczyć „surowe dane binarne”, użyłbym polecenia zrzutu szesnastkowego
hd
lubhexdump
Nie znam żadnego formatu obrazu składającego się z nieustrukturyzowanych bajtów - czy dane mają 8-bitowe wartości RGB? Jeśli plik zawiera 30000 bajtów, czy to RGB dla 100 x 100 pikseli, RGB dla 50 x 200 pikseli lub RGB dla 200 x 50 pikseli, czy coś innego? Czy jest paleta? Musisz wiedzieć coś o organizacji danych!
Aby wyświetlić go jako obraz, użyłbym narzędzi NetPBM, a może ImageMagick, aby przekonwertować go do postaci zrozumiałej dla przeglądarki zdjęć
Jeśli powyższe nie może wykonać zadania, zbadam napisanie małego skryptu Perla
źródło
yum search hd
na pulpicie Fedory i nie miałem go.hexdump
. Na SuSE jest wutil-linux
pakiecie.hexdump
w Arch.Okej, gnuplot może to zrobić.
http://gnuplot.sourceforge.net/demo_4.4/image.html
źródło
convert
z ImageMagick może to zrobić.Np. 8-bitowa skala szarości 2x3:
Następnie:
Wyjaśnienie polecenia:
-depth 8
: każdy kolor ma 8 bitów-size 2x3+0
:2x3
obraz.+0
oznacza rozpoczęcie od przesunięcia 0 w pliku. Jeśli są nagłówki metadanych, możesz je pominąć z przesunięciem.gray:f
: plik wejściowy maf
formatgray
zgodny z definicją podaną na stronie http://www.imagemagick.org/script/formats.php Ta dziwna notacja jest używana, ponieważ ImageMagick zwykle określa format na podstawie rozszerzenia, ale tutaj nie ma rozszerzenia .Problem polega teraz na tym, jak wyświetlić dane wyjściowe. Bezpośredni
eog
:nie jest zbyt dobry, ponieważ obraz jest zbyt mały, a jeśli powiększasz dużo,
eog
używa algorytmu wyświetlania, który miesza piksele, co jest lepsze dla większości zdjęć, ale nie w naszym przypadku. Znalazłem dwie możliwości:gimp out.png
. Edytory obrazów muszą pokazywać każdy pojedynczy piksel.convert out.png -scale 300x200 out2.png
.-scale
jest potrzebne zamiast-resize
, ponieważ-resize
domyślnie miksuje piksele w góręeog
.Wynik:
Przykład RGB:
Testowany na Ubuntu 16.04, ImageMagick 6.8.9.
źródło
/tmp/tex1.dat
), możesz zobaczyć przekonwertowany obraz bezpośrednio za pomocą Imagemagickdisplay
jako obraz 128x256 pikseli za pomocądisplay -depth 8 -size 128x256+0 RGBA:/tmp/tex1.dat
-endian
opcję, ale wygląda na to, że działa jak-depth 16
, obraz jest bardzo ciemnyJeśli nie chcesz go oglądać bezpośrednio, ale raczej przekonwertować, narzędzie do konwersji może to zrobić:
Do odczytu ze standardowego, zakładając 320 x 200 pikseli, 8-bitowy szary, nagłówek 0, zapisywanie do pic.png w formacie PNG.
źródło
gray:-
oznacza formatgray
i-
oznacza ze standardowego. Tak więc bieżące polecenie zawiesza się, czekając na standardowe wejście. Wyjaśniłem to dalej na mojej odpowiedzi: superuser.com/a/978432/128124