php base64編碼轉存成圖片檔案

可能基於某種原因(或許是API),圖片的形式是使用base64編碼儲存於資料庫中
有時候會需要轉存成圖片比較方便處理後續,這時候我們必須對base64編碼做一些處理
 


$img = '010.jpg'

// 將圖片轉化成base64
$base64_img = base64EncodeImage($img);

// 將圖片存在uploads資料夾裡面
echo base64_image_content($base64_img,"uploads/");


 


/*  圖片轉換為base64格式編碼 */
function base64EncodeImage ($image_file)
{
    $base64_image = '';
    $image_info = getimagesize($image_file);
    $image_data = fread(fopen($image_file, 'r'), filesize($image_file));
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    return $base64_image;
}

/*  base64格式編碼轉換為圖片並儲存對應資料夾 */
function base64_image_content($base64_image_content,$path)
{
    //匹配出圖片的格式
    if (preg_match('/^(data:\s*image\/(.*);base64,)/', $base64_image_content, $result))
    {

        if($result[2] == "jpeg")
          $result[2]="jpg";

        $type = $result[2];
        $new_file = $path."/".date('Ymd',time())."/";

        if(!file_exists($new_file)){
        //檢查是否有該資料夾,如果沒有就建立,並給予最高許可權
        mkdir($new_file, 0700);
        }
        $new_file = $new_file.time().".{$type}";
        if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
        return '/'.$new_file;
        }else{
        return false;
        }
    }
    else
    {

        return false;
    }
}