Created
November 7, 2019 07:03
-
-
Save Jason-cqtan/dc631e02f2bd2431db21bab2e439b1fb to your computer and use it in GitHub Desktop.
php图片base64编码解码
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 图片编码 | |
* @param string $img | |
* @param bool $imgHtmlCode | |
* @return string | |
*/ | |
function imgBase64Encode($img = '', $imgHtmlCode = true) | |
{ | |
//如果是本地文件 | |
if(strpos($img,'http') === false && !file_exists($img)){ | |
return $img; | |
} | |
//获取文件内容 | |
$file_content = file_get_contents($img); | |
if($file_content === false){ | |
return $img; | |
} | |
$imageInfo = getimagesize($img); | |
$prefiex = ''; | |
if($imgHtmlCode){ | |
$prefiex = 'data:' . $imageInfo['mime'] . ';base64,'; | |
} | |
$base64 = $prefiex.chunk_split(base64_encode($file_content)); | |
return $base64; | |
} | |
/** | |
* 图片解码 | |
* @param string $base64_image_content base64编码字符串 | |
* @param bool $onlyCode 是否只需要base64编码字符串(排除开头data,) | |
* @param bool $save_img 是否保存图片 | |
* @param string $path 保存图片路径 | |
* @return array|bool|false|string | |
*/ | |
function imgBase64Decode($base64_image_content = '',$onlyCode=true, $save_img = false,$path='') | |
{ | |
if (empty($base64_image_content)) { | |
return false; | |
} | |
//匹配出图片的信息 | |
$match = preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result); | |
if (!$match) { | |
return false; | |
} | |
//解码图片内容(方法一) | |
$base64_image = preg_split("/(,|;)/",$base64_image_content); | |
if($onlyCode) { | |
return $base64_image[2]; | |
} | |
$file_content = base64_decode($base64_image[2]); | |
$file_type = substr(strrchr($base64_image[0],'/'),1); | |
//解码图片内容(方法二) | |
//$base64_image = str_replace($result[1], '', $base64_image_content); | |
//$file_content = base64_decode($base64_image); | |
//$file_type = $result[2]; | |
//如果不保存文件,直接返回图片内容 | |
if (!$save_img) { | |
return $file_content; | |
} | |
//如果没指定目录,则保存在当前目录下 | |
if (empty($path)) { | |
$path = __DIR__; | |
} | |
$file_path = $path . "/" . date('Ymd', time()) . "/"; | |
if (!is_dir($file_path)) { | |
//检查是否有该文件夹,如果没有就创建 | |
mkdir($file_path, 0777, true); | |
} | |
$file_name = time() . ".{$file_type}"; | |
$new_file = $file_path . $file_name; | |
if (file_exists($new_file)) { | |
//有同名文件删除 | |
@unlink($new_file); | |
} | |
if (file_put_contents($new_file, $file_content)) { | |
return $new_file; | |
} | |
return false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment