PHPTwitterfacebookG+B!PocketLINE先ほど、file_get_contentsで取得した画像ファイルを出力したところ、画像ではなく画像のデータ(文字化けをともなった文字列)が画面いっぱいに表示されました。$img;?>あれ?おかしいな・・・と思ったんですが、あれこれ考えていたら原因が分かりました。file_get_contentsで取得したのはデータfile_get_contentsで取得したのは画像データですが、所詮データなので、これをそのまま出力したらブラウザ上ではデータ(文字列)として扱われます。そのためブラウザに「このデータは画像データですよ!」と教えてあげなくてはなりません。レスポンスヘッダの「content-type」で「jpeg」「png」「gif」・・・などのMINEタイプを指定する必要があります。ブラウザはcontent-typeを元にファイルを処理する通常、サーバーは出力するファイルの拡張子に応じてcontent-typeをヘッダーに含めてブラウザからの要求に応えます。ブラウザはそのcontent-typeに応じて画面の出力を工夫します。環境によっては、サーバーがcontent-typeをレスポンスできない時があります。この場合、当然ブラウザはそのファイルをどのように処理すればよいのかわかりません。このような時に、画像ファイルにも関わらず、画像として表示されるのではなくデータそのものが表示されてしまいます。content-typeを指定すればよいということで、タイトルのような現象になった場合、content-typeを指定してあげれば解決です。このようにします(画像ファイルが「jpeg」の場合)。$img;?>なお、画像ファイルのMIMEタイプが「png」「gif」「bmp」ならば次のようにします。image/bmp');これでブラウザにしっかりと画像ファイルとして処理させることができます。蛇足ブラウザは、拡張子が「.jpg」だから「jpgファイルだ」と決めているわけではありません。content-typeで決めています。逆を突くと、content-typeを「image/gif」とすると、gifファイルではないものをgifファイルとして処理させることができます。@ysklog_net﻿この記事をシェアする管理人プロフィール今年(2017年)の3月に7年間勤めた公務員を退職して現在ニートしているアホです。【PHP】JSONエンコードされた文字列をデコードする【PHP】画像(jpg、png、gif)の作成方法コメントまだコメントはありません。