कच्चे बाइनरी डेटा को दी गई चौड़ाई और ऊंचाई के साथ एक छवि के रूप में कैसे देखें?


15

क्या लिनक्स के लिए एक कार्यक्रम मौजूद है जो कच्चे बाइनरी डेटा प्रदर्शित कर सकता है?

मेरी बाइनरी फ़ाइलों में प्रत्येक बाइट एक पिक्सेल का प्रतिनिधित्व करती है, इसलिए यह बहुत उपयोगी होगा यदि ऐसा कुछ मौजूद है जहां मैं कह सकता हूं

program_name --input=dat001.bin --width=200 --height=100

और यह पिक्सल प्रदर्शित करेगा।

मुझे आश्चर्य है कि अगर gnuplot, इसके लिए इस्तेमाल किया जा सकता है ...?


2
प्रश्न का कोई मतलब नहीं है। कच्चे बाइनरी डेटा को प्रदर्शित करने के लिए, इसे मानव पठनीय रूप में परिवर्तित किया जाना चाहिए। आमतौर पर यह फॉर्म हेक्साडेसिमल है, जिसे आप hdप्रारूपित करने के लिए उपयोग कर सकते हैं । फिर आप एक छवि देखने के लिए कहते हैं। यदि यह एक छवि है, तो यह एक छवि प्रारूप (जैसे bmp) में होने वाला है, जो बहुत कम से कम होगा, एक हेडर है जो प्रारूप, चौड़ाई, ऊंचाई, रंग की गहराई की पहचान करता है, और शायद एक रंग पैलेट भी है जुड़ा हुआ।
Psusi

@psusi जबकि शीर्षक बेहतर होगा कि कच्चे पिक्सेल डेटा को कैसे प्रदर्शित किया जाए , इस प्रश्न का आशय स्पष्ट है, और यह पूरी तरह से मेरे लिए मायने रखता है। ("मुझे छवि मेटा डेटा निर्दिष्ट करने के लिए एक कार्यक्रम चाहिए") क्या यह आपके लिए भी (या शायद संपादन के बाद) दृष्टि में अधिक समझ में आता है?
नाथन किड

@NathanKidd, आह, हाँ .. अगर आप जानते हैं कि यह एक विशिष्ट प्रारूप का उपयोग करके एक छवि है, लेकिन कोई हेडर नहीं है, तो केवल मनमाना द्विआधारी डेटा होने के बजाय ... हां मिला।
17


ffmpeg इसे कर सकता है: stackoverflow.com/a/15037011/5447906
anton_rh

जवाबों:


12

"कच्चे बाइनरी डेटा" को देखने के लिए, मैं हेक्स डंप कमांड का उपयोग करूंगा hdयाhexdump

$ HD -C a.txt
00000000 61 0a 61 61 0a 61 61 61 0a 61 61 61 61 0 0 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 67 6e 3e 0a 61 61 61 61 61 61 | bb | <start >aaaaaa |
00000030 61 0a 61 61 61 61 61 61 61 0 61 61 61 61 61 61 | a.aaaaaaa.aaaaaa |
00000040 61 61 0 ए | ए | |
00000043

मुझे किसी भी छवि प्रारूप का पता नहीं है जिसमें असंरचित बाइट्स शामिल हैं - डेटा 8-बिट आरजीबी मान है? यदि फ़ाइल में 30000 बाइट्स हैं, तो 100x100 पिक्सेल के लिए RGB या 50x200 पिक्सेल के लिए RGB या 200x50 पिक्सेल के लिए RGB या कुछ और? क्या कोई पैलेट है? आपको डेटा के संगठन के बारे में कुछ जानना होगा!

इसे एक छवि के रूप में देखने के लिए मैं NetPBM उपयोगिताओं या शायद ImageMagick का उपयोग करके इसे एक छवि दर्शक द्वारा समझे गए रूप में परिवर्तित करूंगा।

अगर ऊपर वाला काम नहीं कर सकता है तो मैं एक छोटी सी पर्ल स्क्रिप्ट लिखने की जाँच करूँगा


मुझे यह कहाँ मिल सकता है? मैंने अभी अभी yum search hdअपने फेडोरा डेस्कटॉप पर किया था , और यह मेरे पास नहीं था।
सांड्रा

ठीक है। मुझे पिजेल्स को ग्राफिक के रूप में देखने की जरूरत है ...
सैंड्रा

2
बाइनरी कहा जा सकता है hexdump। SuSE पर यह util-linuxपैकेज में है।
टर्बो जे

FWIW यह hexdumpआर्क में भी है।
स्पार्कहॉक


10

convertImageMagick से कर सकते हैं।

जैसे, 8-बिट 2x3 ग्रेस्केल:

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

फिर:

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

कमांड स्पष्टीकरण:

  • -depth 8: प्रत्येक रंग में 8 बिट हैं
  • -size 2x3+0: 2x3छवि। +0फ़ाइल में ऑफसेट 0 से शुरू होता है। यदि मेटाडेटा हेडर हैं, तो आप उन्हें ऑफ़सेट के साथ छोड़ सकते हैं।
  • gray:f: इनपुट फ़ाइल है f, और प्रारूप है gray, जैसा कि http://www.imagemagick.org/script/formats.php पर परिभाषित किया गया है इस अजीब संकेतन का उपयोग किया जाता है क्योंकि ImageMagick आमतौर पर प्रारूप को विस्तार से निर्धारित करता है, लेकिन यहां कोई विस्तार नहीं है ।

अब समस्या यह है कि आउटपुट कैसे देखें। एक प्रत्यक्ष eog:

eog out.png

यह बहुत अच्छा नहीं है क्योंकि छवि बहुत छोटी है, और यदि आप बहुत अधिक ज़ूम करते हैं, तो eogएक प्रदर्शन एल्गोरिथ्म का उपयोग करता है जो पिक्सेल को मिलाता है, जो कि अधिकांश चित्रों के लिए बेहतर है, लेकिन हमारे मामले में नहीं। मुझे दो संभावनाएँ मिलीं:

  • gimp out.png। छवि संपादकों को हर एक पिक्सेल दिखाना चाहिए।
  • convert out.png -scale 300x200 out2.png-scaleइसके बजाय की आवश्यकता है -resize, क्योंकि -resizeमिक्सल्स पिक्सल eogडिफ़ॉल्ट रूप से बहुत पसंद करते हैं ।

आउटपुट:

यहाँ छवि विवरण दर्ज करें

RGB उदाहरण:

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

यहाँ छवि विवरण दर्ज करें

उबंटू 16.04, ImageMagick 6.8.9 पर परीक्षण किया गया।


1
एक और उदाहरण: यदि आपके पास RGBA फॉर्मेट (कहना /tmp/tex1.dat) में एक फाइल है , तो आप सीधे परिवर्तित इमेज को इमेजमेगिक की 128x256 displayपिक्सेल इमेज के साथdisplay -depth 8 -size 128x256+0 RGBA:/tmp/tex1.dat
sdaau

क्या होगा यदि पिक्सल में 10 ओटी 12 बिट्स हों? मैं कोशिश की है -endianविकल्प लेकिन ऐसा लगता है कि यह रूप में काम करता -depth 16है, छवि बहुत अंधेरा है
एसओपी

@ एसओपी के बारे में सुनिश्चित नहीं है कि 10 12. 12 गहराई 12 के साथ काम कर सकता है? 10 मुझे उम्मीद है कि आपको प्रति चैनल कितने बिट्स निर्दिष्ट करने की आवश्यकता है, क्योंकि 10 4 (आरजीबीए) और न ही 3 (आरजीबी) से विभाज्य नहीं है। यकीन नहीं है कि यह कैसे करना है।
सिरो सेंटिल्ली 新疆 改造 iro i 事件 '

4

यदि इसे प्रत्यक्ष रूप से नहीं देखना चाहते हैं, बल्कि इसे परिवर्तित करते हैं तो कन्वर्ट उपयोगिता ऐसा कर सकती है:

स्टड से पढ़ने के लिए, 320 x 200 पिक्सल, 8 बिट ग्रे, 0 के हेडर, पीएनजी प्रारूप में pic.png को सहेजते हुए।

convert -depth 8 -size 320x200+0 gray:- pic.png

1
मेरे जैसे नए लोगों के लिए: स्टड से gray:-प्रारूप grayऔर -साधन का मतलब है। इस प्रकार वर्तमान कमांड स्टड के इंतजार में लटका हुआ है। मैंने अपने उत्तर के बारे में आगे बताया है: superuser.com/a/978432/128124
Ciro Santilli 中心 my my my
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.