こいつ!BMP画像のくせにテキストエディタで開いて文字を読み取れるぞ!

 

 

こんにちは。ナガオカ(@boot_kt)です。

 

この記事は↓の前回記事を先に読んでいることが前提です
記事中でちょくちょく「前回の記事で…」という記述が出ますので、↓この記事を参照してね♪

前回の記事で文字コードの簡単な説明をしました

  • コンピューターは数値だけを理解するんだよぉ~
  • 文字を理解できないんだよぉ~
  • 文字コードってのは数値と文字の対比表の事だよぉ~
  • その対比表をコンピューターが見て数値を文字に変換してくれてるんだぉ~

っていう説明をしました

で、、、、

ここで湧いてくる疑問が・・・・

 

画像ファイルとかはどーーなるんだよぉーーーーー!!!!!

画像ファイルでも文字が出るって言いたいのかーーーーーーー!!!
んなワケねぇーーーだろーーーーー!!!

 

ではないでしょうか?

 

今回は疑問にお答えします

この記事のザックリした内容
前回の記事はコレ↓
>> 文字コードってなんですのん? 文字コード最初の一歩の超々入門!

◆対象読者

  • 文字コードの理解を、変な視点で見てみたい人
  • 前回の記事を読んだ人
  • テキストだけじゃなく、bmpファイルとかのバイナリでの文字コードはどうなの?を知りたい人

 

◆解決できるかも知れないお悩み

  • 『前回の記事で「コンピュータは数値だけを理解するし数値だけをHDD/SSDに保存する」「文字コード = 数値と文字の対比表」
     って書いてあったけど、それじゃぁ画像ファイルだとどうなるの?
     画像ファイルに文字なんて出ないじゃん!』
    と思っている人

 

◆どうやって解決するか

  • bmpファイルをテキストエディタで開きます!

 

 

 

まずは結論!!!

コンピューターがHDD/SSDに保存されているデータ(数値)を見て、「あ」とかの文字を出すのか、画像を出すのか、はたまた音楽を鳴らすのか、何をもって決めるかと言うと、

それは、

 

ソフトウェア(アプリケーション)が決めます

 

ま、そらそうですよね

でも扱っているのは数値だけっていうのは変わりません

場面に合わせて…と言うか、アプリケーションがそのデータ(数値)を必要な形に変換します

 

ちょっと実験、画像(bmp)をテキストエディタで表示してみよう

ぜひ同じようにやってみてください!

  1. こういうBMP画像があります
    Windowsのペイントで作りました
    色は「R:130 G:129 B:227」です
    普通の画像ですよね

  2. バイナリエディタで見てみましょう
    こんな感じです

  3. これをテキストエディタで表示したいんですけど、ちょっとこのままだとうまくテキストを表示できないため、ちょっと改造します

    ↓この部分が不要なので消します
    ↓残す部分が画像の本体です
    ↓消す部分は画像の属性とか情報です

  4. ↓消したらこんな感じ
  5. これをテキストエディタで開いてみましょう
    テキストエディタの文字コードはUTF-8にしてください

    なんとっ!

    が表示されたっ!

 

同じ数値でも、画像アプリやテキストエディタが好きな形に変えるって分かったかな?

元々の画像はWindowsのペイントという画像ソフトで作った画像なのに(ちょっと加工はしましたが)、そのファイルをテキストエディタで開くとちゃんとという文字が表示されるんですよ!

コンピューターというか、各アプリケーションが数値というデータを読み込んで、各アプリケーションが欲しい必要な形(画像 or 文字)に変換して表示するというのが分かったかな?

BMP画像について
不要な部分を削除した後のBMPファイルはそのままではもう画像としては表示できません
これは画像ファイルの決まりごととして、画像データの本体だけではなく、画像の属性や情報のデータが必要だからです

削除した部分を元に戻せばまた画像として表示することができます

 

広告




 

さいごに、

  • コンピューターは数値だけを扱う
  • アプリケーションによって、数値は色々な形(画像や文字、時には音楽)に変換される
  • 文字コードっていうのは、テキストを表示する時のみに必要な考え方

というのが分かりましたか?

記事を見ながら、同じように作業してみてください

楽しみながら、遊びながら、是非試してみてやぁ~♪

 
 

次の記事はコチラ
タイトルだけ同じ内容に思えるけど、全然違いますよ!
是非読んでね♪

>> ビットマップファイルをテキストファイルで見る方法

 


 

プログラミングだけではなく、コンピューターの基礎知識を学びませんか?
プログラム言語の命令を覚えることだけがプログラミングではありません
もっとコンピューターの基礎的な根本的な知識を持った上でプログラミングを学習すれば、

  • 変更に強い!
  • 処理速度が速い!
  • メモリ効率が良い!
  • 不具合が発生しにくい!

こういったプログラミング能力が身につきますJ!

無料体験レッスンがありますのでお気軽にどうぞ!!!

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。