"BOKU"のITな日常

BOKUが勉強したり、考えたことを頭の整理を兼ねてまとめてます。

HTMLは正しく、画像ファイルもあるのに、IEでのみブラウザに画像が表示されない

f:id:arakan_no_boku:20200826222925p:plain

目次

IEでのみブラウザに画像が表示されない

ブラウザに画像が表示されないという連絡がありました。

しかも、すべての画像ではなく表示されるものもあるとのこと。

HTMLの記述ミスを疑いましたが、確認したところHTMLにはミスはありません。

なんせ、IMGタグで、こんな感じに書いているだけですから。

<img src="test.jpg" />

次にファイルがないのを疑いましたが、test.jpg ファイルもちゃんとあります。

確認すると、いまだにIEInternet Explorer)を使っているユーザだったので、ひょっとして、ブラウザによって違うのかなと思って試してみると、以下のような結果でした。

  • Chromeで開く => 画像はちゃんと表示される。
  • Edgeで開く => 画像はちゃんと表示される
  • FireFoxで開く => 画像はちゃんと表示される
  • IEInternet Explorer)で開く => 画像は表示されない。 

IEの場合だけ表示されないんですね。  

原因は画像ファイルにありました

画像ファイルをダンプしてみました。

XEditというプログラムを使ってみました。

freesoft-100.com

すると・・。

f:id:arakan_no_boku:20200826230542p:plain

なんだこれ!!(笑)

先頭が「PNG」で始まるPNGヘダーがあります。

test.jpgという名前で、「JPG」の拡張子がついているけど、中身はPNGファイルみたいです。

ちなみに、同じ画像がJPEG形式で保存されていたらダンプはこうなるはずです。

あきらかに違いますよね。

f:id:arakan_no_boku:20200826230948p:plain

最新のブラウザでは拡張子が間違ってても表示する 

なんのことはない。

test.jpg というファイルの中身が「PNGフォーマット画像ファイル」だったわけです。

驚いたことに。

画像ファイルの拡張子と中身のフォーマットが異なっていても、今時のブラウザでは何事もなかったかのように表示するのです。

そしてこれは、ブラウザに限られたことではありませんでした。

試してみたところ、Windows10の付属アプリケーションはほぼそういう動きです。

エクスプローラでも何事もなかったように画像表示しますし、ペイントなども同じ。

つまり。

古い考え方で開発されている「IEInternet Explorer)」だけが、拡張子と中身のフォーマットが違うので正直にエラーにしていた。

そういう話なのですね。

個人的には、今回は「IEInternet Explorer)」の動きのほう、エラーに気付けるので好みですけど、まあ、そこが「昭和の人間」なのでしょう(笑) 

どうやったら、あんな中身と拡張子の違うファイルをうっかり作成できるのか?理解に苦しみますが、おかげで、ひとつ知識が増えました(笑) 

ではでは。