プログラムをする上で意識しないといけない事にデータ形式というものがあります。
例えば画像名の最後に「.png」などのような拡張子がついていますね。
これがデータの形式を表しています。
プログラムでは色々な形式のデータを扱います。
それを扱う際に、別のデータ形式にしたいという場合も発生します。
今回はそんな時に使用するbase64について以下の内容でお話しします。
base64について
【基本】encode(エンコード)・decode(デコード)を行う
【応用】imageのencode・decodeについて
分かりやすくbase64について解説しますのでぜひご覧になってください。
base64とは
base64は英数字(64種類)を使用するデータの形式を変更方法の一種です。
base64を用いてデータの形式を変更したり、元に戻したりする事ができます。
encode(エンコード)とは
encodeはデータの形式を変更する事です。
符号化と呼ばれる場合もあります。
一度encodeしたデータを元に戻す事もできます。
decode(デコード)とは
データの形式を変更(encode)した後、元に戻す事をdecodeと呼びます。
encodeとdecodeは対で使う場合も多いです。
あるタイミングでencodeしたデータを、また別のタイミングでdecodeというように使用します。
【実践・基本】encode・decodeを行ってみよう
それでは、実際にencode・とdecodeを行ってみましょう。
PHPでbase64方式でencodeする場合、base64_encodeを使用します。
<?php $text = 'samurai'; echo base64_encode($text); ?>
結果 c2FtdXJhaQ==
変数に代入したデータとは全く違った出力結果になりました。
これがencodeです。
続いて、元に戻すdecodeを行います。
decodeの場合はbase64_decodeという関数を使用します。
<?php $text = 'c2FtdXJhaQ=='; echo base64_decode($text); ?>
結果 samurai
元のテキストデータに戻りました。
今回はテキストデータを変換しましたが、他のデータも変換する事が出来ます。
次章ではimageデータを変換します。
【実践・応用】imageのencode・decodeを行ってみよう
前章ではテキストデータを変換しました。
しかし、変換したいデータがテキストデータ以外だった場合はどうでしょうか。
以下のコードを見てください。
<?php $img = base64_encode(file_get_contents('/home/samurai/test.jpg')); ?> <img src="data:image/jpg;base64,<?php echo $img; ?>">
1行目で/home/samurai/の配下にあるtest.jpgをencodeしました。
そして、2行目でimgタグを記述して表示させています。
ブラウザで実行すると、画像がブラウザに表示されていると思います。
しかし普通にimgタグで記述してもよい気もしませんか?
実はこのようにencodeされたimageデータはHTMLファイルの中に書き込まれています。
このようなimageデータをインラインイメージと呼びます。
そして、imgタグを呼び出すためにサーバーに画像を取りにいかないのでサーバーの負荷の軽減になる可能性があるのです。
続いて、元に戻して画像を保存する場合のサンプルコードを紹介します。
<?php $img = base64_encode(file_get_contents('/home/samurai/test.jpg')); file_put_contents('/home/samurai/test2.jpg', base64_decode($img)); ?>
1行目でencodeした画像データを、2行目でdecodeして/home/samurai/配下にtest2.jpgとして保存しました。
インラインイメージとして使う以外に、メールの添付ファイルにするためにテキストデータに変換するなどという場合もあるかもしれません。
まとめ
本日はPHPでbase64の方式でencode・decodeする方法をお伝えしました。
PHPの関数で変換する以外にonlineのツールでencode・decodeする方法もあります。
興味のある方はネットで検索してみてください。
それでは、また。