>  기사  >  백엔드 개발  >  PHP에서 파일을 base64 인코딩 형식으로 변환하는 방법

PHP에서 파일을 base64 인코딩 형식으로 변환하는 방법

L
L원래의
2020-06-02 09:25:116687검색

PHP에서 파일을 base64 인코딩 형식으로 변환하는 방법

PHP는 이미지 파일을 base64 인코딩 형식으로 어떻게 변환합니까?

PHP는 Base64를 매우 잘 지원하며 이미지의 Base64 인코딩 및 디코딩을 담당하는 base64_encode 및 base64_decode가 내장되어 있습니다.

인코딩 측면에서는 이미지 스트림을 읽은 다음 base64_encode를 사용하여 인코딩하면 됩니다.

/**
 * 获取图片的Base64编码(不支持url)
 * @date 2017-02-20 19:41:22
 *
 * @param $img_file 传入本地图片地址
 *
 * @return string
 */
function imgToBase64($img_file) {
    $img_base64 = '';
    if (file_exists($img_file)) {
        $app_img_file = $img_file; // 图片路径
        $img_info = getimagesize($app_img_file); // 取得图片的大小,类型等
        //echo &#39;<pre class="brush:php;toolbar:false">&#39; . print_r($img_info, true) . &#39;

'; $fp = fopen($app_img_file, "r"); // 图片是否可读权限 if ($fp) { $filesize = filesize($app_img_file); $content = fread($fp, $filesize); $file_content = chunk_split(base64_encode($content)); // base64编码 switch ($img_info[2]) { //判读图片类型 case 1: $img_type = "gif"; break; case 2: $img_type = "jpg"; break; case 3: $img_type = "png"; break; } $img_base64 = 'data:image/' . $img_type . ';base64,' . $file_content;//合成图片的base64编码 } fclose($fp); } return $img_base64; //返回图片的base64 } //调用使用的方法 $img_dir = dirname(__FILE__) . '/uploads/img/11213223.jpg'; $img_base64 = imgToBase64($img_dir); echo ''; //图片形式展示 echo '
'; echo $img_base64; //输出Base64编码

디코딩이 좀 더 번거롭습니다. 그 이유는 이미지를 base64 문자열로 인코딩한 후 원래 base64 인식에 사용되는 data:image/png;base64 문자가 인코딩에 추가되기 때문입니다. 그러나 PHP에 직접 넣고 base64_decode 함수를 사용하여 디코딩하면 최종 저장된 이미지 파일 형식이 손상됩니다. 해결 방법은 먼저 다음 문자열을 제거하는 것입니다.

$base64_string= explode(&#39;,&#39;, $base64_string); //截取data:image/png;base64, 这个逗号后的字符
$data= base64_decode($base64_string[1]);  //对截取后的字符使用base64_decode进行解码
file_put_contents($url, $data); //写入文件并保存

권장 튜토리얼: "PHP 튜토리얼 "

위 내용은 PHP에서 파일을 base64 인코딩 형식으로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.