画像を埋め込むためのデータにしたい(base64_encode())

BASE64エンコードして画像をHTMLやCSSに埋め込みたい

作成日:2019-10-23, 更新日:2019-10-23

基本

単純に手持ちの画像をCSSに埋め込めるようにテキストデータに変換したい。そのための内容

1.元の画像をテキストデータに変換(base64_encode())
2.mimeタイプなど、prefix(?)を追加

サンプル

<?php
  $url = '〇〇〇';
  
  $data = file_get_contents($url);
  
  // 埋め込みデータ用にbase64エンコード
  $base64_data = base64_encode($data);
  
  // mime_typeを取得するためにいったん、デコードする(デコードしないと余計な情報で出力されてしまう)
  $tmp = base64_decode($base64_data);
  
  // mime_typeを取得(PHP5.3.0以上)
  $mime_type = finfo_buffer(finfo_open(), $tmp, FILEINFO_MIME_TYPE);
  
  $base64_pre = 'data:' . $mime_type . ';base64,';
?>

<textarea class="form-control"><?php echo $base64_pre . $base64_data; ?></textarea>
<img src="<?php echo $base64_pre . $base64_data; ?>">

DBに保存するとき

・上記の「$base64_pre . $base64_data」の内容を保存してやる。
※base64エンコードしたヤツを元のようなファイルにしたいなら「base64_decode()」した内容を「file_put_contents()」とかで出力で大丈夫(・・・だと思う)