• 封装图片处理方法


    案例一:小程序的图片处理
    $file = request()->file('uploadimg'); //接收图片
            //创建图片存放位置
            $upload_dir = ROOT_PATH . 'public/upload/images/';
            if (!file_exists($upload_dir)) {
                mkdir($upload_dir, 0755, true);
            }
          
            if ($file) {
    // 移动到框架应用根目录/public/uploads/ 目录下
    $info = $file->rule('date')->move($upload_dir); if ($info) { //获取文件名 $image_name = $info->getSaveName(); $fileurl = '/upload/images/'. $image_name; return $fileurl; } }else{ echo "错误"; }



    案例二:base64图片处理方法
    class Image extends Base
    {
        public function addimage($file = 'images')
        {
            $img_url    = input('avatar') ? input('avatar') : "";
            if ($img_url) {
           //如果是http格式的不需要处理直接返回
                if (substr($img_url, 0, 4) == 'http') {
                    $src = $img_url;
                    return $src;
                    exit;
                } else {
    //处理图片
                    $image_arr  = explode(',', $img_url);
                    $img_data   = $image_arr[1];
                    $img        = str_replace(' ', '+', $img_data);
                    $fileData   = base64_decode($img);
                    $image_name = uniqid() . '.png';  //返回13位字符串
                    $upload_dir = ENV::get('root_path') . 'public/upload/' . $file . '/';
                    if (!file_exists($upload_dir)) {
                        mkdir($upload_dir, 0755, true);
                    }
                    $filedir = $upload_dir . '/' . $image_name;
                    $src = config('website') . '/upload/' . $file . '/' . $image_name;
                    $status = file_put_contents($filedir, $fileData);
                    if ($status) {
                        return json(['status' => 1, 'data'=>$src,'msg' => '操作成功']);
                        exit;
                    } else {
                        echo "0";exit;
                    }
                }
            } else {
                return json(['status' => 0,'data'=>'', 'msg' => '请选择正确的图片格式!']);
            }
        }
    }

    案例三:视频转mp4格式的处理

    $video_url        = input('video'); //商品视频
            $uid              = input('uid'); //用户身份id
            if($video_url){
                $video_arr    = explode( ',', $video_url );
                $video_data   = $video_arr[1];
                $video        = str_replace( ' ', '+', $video_data );
                $fileData     = base64_decode( $video );
                //设置文件保存位置,若文件夹不存在 则创建文件夹
                $video_name   = $uid.time() . '.mp4';
                $upload_dir   = ENV::get('root_path') . 'public/upload/product_video/';
                if ( ! file_exists( $upload_dir ) ) {
                    mkdir( $upload_dir, 0755, true );
                }
                //保存地址
                $filedir      = $upload_dir . '/' . $video_name;
                //视频链接
                $fileurl      = config( 'website' ) . '/upload/product_video/'. $video_name;
                //保存到服务器
                $status       = file_put_contents( $filedir, $fileData );
                //确认是否保存到服务器
                if($status){
                    //设置视频缩略图名字
                    $tmp_name = uniqid();

                    //执行linux ffmpeg命令 $fileurl 为视频可访问链接  最后一个参数是图片服务器保存路径
                    $linux    = "ffmpeg -i $filedir -r 1 -f image2  /www/wwwroot/qmh/public/upload/video_img/".$tmp_name.'.jpg';
                    exec($linux);   //没有执行

                    //定义视频缩略图链接 返回视频链接和缩略图链接
                    $url      = config( 'website' ) . '/upload/video_img/' . $tmp_name.'.jpg';
                    $url = $linux;
                    // return json(['video_url'=>$fileurl,'img_url'=>$url]);
                    return json(['status' => 1,'data'=>['video_url'=>$fileurl,'img_url'=>$url],'msg' => '视频上传成功'],200);
                }else{
                    return json(['status' =>0,'data'=>'','msg' => '视频上传失败'],200);
                }
            }


  • 相关阅读:
    CRMEB系统开发文档
    R语言︱LDA主题模型——最优主题...
    2018前端面试及答案
    开发流程
    uitramon 安装包
    scrapy 爬取时很多重复 及日志输出
    fake-useragent插件无法正常使用的问题
    区块链共识机制(一)
    Python Twisted 之 Deferred
    区块链的三大分支:公有链、联盟链和私有链
  • 原文地址:https://www.cnblogs.com/kissmy/p/10120859.html
Copyright © 2020-2023  润新知