zoukankan      html  css  js  c++  java
  • PHP 之将网络图片base64编码与解码

    一、效果图

     二、编码

    /**
     * 图片base64编码
     * @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;
    }

    三、解码

    /**
     * 片base64解码
     * @param string $base64_image_content 图片文件流
     * @param bool $save_img 是否保存图片
     * @param string $path 文件保存路径
     * @return bool|string
     */
    function imgBase64Decode($base64_image_content = '', $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);
        $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;
    }
  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/yang-2018/p/12843950.html
Copyright © 2011-2022 走看看