PHP で base64エンコード

以下に示す test.php を作成する
同一フォルダに img.png を置いて test.php を実行すると img.pngが Base64 でエンコードされて test.html 内に書き出される。

test.php

<?php
$filePath = "img.png";
$str = generateBase64ImageTag($filePath);
if($str) {
    file_put_contents("test.html", $str);
}
 
function generateBase64ImageTag ($filePath) {
    if(!is_file($filePath)) {
        echo "File does not exist.";
        return "";
    }
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    if(!$finfo) {
        echo "Failed to open fileinfo.";
        return "";
    }
    $mimeType = finfo_file($finfo, $filePath);
    if(!preg_match("#image/#", $mimeType, $matches)) {
        echo "File type is not image.";
        return "";
    }
    $fileHandle = fopen($filePath, "r");
    if(!$fileHandle) {
        echo "Failed to open " . $filePath;
        return "";
    }
    $binary = fread($fileHandle, filesize($filePath));
    return "<img src=\"data:" . $mimeType . ";base64," . base64_encode($binary) . "\">";
}

説明

is_file($filePath)

ファイル存在確認

finfo_open(FILEINFO_MIME_TYPE)

マジックデータベースを開いてデータベース情報を取得する
マジックデータベースはMIMEタイプのデータベース

preg_match(“#image/#”, $mimeType, $matches)

MIMEタイプを取得して正規表現で画像かチェックする

fopen($filePath, “r”)

画像ファイルを開いてBase64でエンコードする

参考

PHP Manual : fread
PHP Manual : finfo_open
デジらくだブログ : Base64とは

シェアする

  • このエントリーをはてなブックマークに追加

フォローする