GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara melihat data biner mentah sebagai gambar dengan lebar dan tinggi tertentu?

Untuk melihat "data biner mentah", saya akan menggunakan perintah hex dump hd atau hexdump

$ hd -C a.txt
00000000  61 0a 61 61 0a 61 61 61  0a 61 61 61 61 0a 61 61  |a.aa.aaa.aaaa.aa|
00000010  61 61 61 0a 62 62 62 0a  62 62 62 62 0a 62 62 62  |aaa.bbb.bbbb.bbb|
00000020  62 62 0a 3c 62 65 67 69  6e 3e 0a 61 61 61 61 61  |bb.<begin>.aaaaa|
00000030  61 0a 61 61 61 61 61 61  61 0a 61 61 61 61 61 61  |a.aaaaaaa.aaaaaa|
00000040  61 61 0a                                          |aa.|
00000043

Saya tidak tahu format gambar apa pun yang terdiri dari byte tidak terstruktur - apakah datanya 8-bit nilai RGB? Jika file berisi 30000 byte, apakah RGB untuk 100x100 piksel atau RGB untuk 50x200 piksel atau RGB untuk 200x50 piksel atau yang lainnya? Apakah ada palet? Anda harus mengetahui sesuatu tentang pengaturan data!

Untuk melihatnya sebagai gambar saya akan menggunakan utilitas NetPBM atau mungkin ImageMagick untuk mengubahnya menjadi bentuk yang dipahami oleh penampil gambar

Jika hal di atas tidak berhasil, saya akan menyelidiki penulisan skrip Perl kecil


Oke, gnuplot bisa melakukannya.

http://gnuplot.sourceforge.net/demo_4.4/image.html


convert dari ImageMagick bisa melakukannya.

Misalnya, skala abu-abu 2x3 8-bit:

printf '\x00\xFF\x88\xFF\x00\xFF' > f

Lalu:

convert -depth 8 -size 3x2+0 gray:f out.png

Penjelasan perintah:

  • -depth 8 :setiap warna memiliki 8 bit
  • -size 2x3+0 :2x3 gambar. +0 berarti mulai dari offset 0 dalam file. Jika ada header metadata, Anda dapat melewatinya dengan offset.
  • gray:f :file inputnya adalah f , dan formatnya adalah gray , seperti yang didefinisikan di http://www.imagemagick.org/script/formats.php Notasi aneh ini digunakan karena ImageMagick biasanya menentukan format dari ekstensi, tetapi di sini tidak ada ekstensi.

Masalahnya sekarang adalah bagaimana melihat hasilnya. eog langsung :

eog out.png

tidak terlalu bagus karena gambarnya terlalu kecil, dan jika Anda banyak memperbesar eog menggunakan algoritme tampilan yang memadukan piksel, yang lebih baik untuk sebagian besar gambar, tetapi tidak dalam kasus kami. Saya menemukan dua kemungkinan:

  • gimp out.png . Editor gambar harus menampilkan setiap piksel.
  • convert out.png -scale 300x200 out2.png . -scale diperlukan sebagai pengganti -resize , sejak -resize mixels piksel seperti eog secara default.

Keluaran:

Contoh RGB:

printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png

Diuji pada Ubuntu 16.04, ImageMagick 6.8.9.


Linux
  1. Mengekstrak dan menampilkan data dengan awk

  2. Cara Melihat Metadata Gambar Di Linux

  3. Cara Melihat, Memodifikasi, dan Membuat Ulang initrd.img

  1. Mengapa Data Penting Dan Bagaimana Cara Melindunginya

  2. Cara Mengatur LogAnalyzer dengan Rsyslog dan MySQL

  3. Cara melihat kinerja sebelumnya dengan sar di Linux

  1. Bagaimana Cara Memindahkan File Dan Melihat Kemajuannya (mis. Dengan Bilah Kemajuan)?

  2. CentOS / RHEL 6:Cara mengekstrak gambar initramfs dan mengedit/melihatnya

  3. Cara Memulai dan Menghentikan OSWatcher