128 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			128 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// | Bwsaas
							 | 
						||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// | Copyright (c) 2015~2020 http://www.buwangyun.com All rights reserved.
							 | 
						||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
							 | 
						||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// | Gitee ( https://gitee.com/buwangyun/bwsaas )
							 | 
						||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// | Author: buwangyun <hnlg666@163.com>
							 | 
						||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// | Date: 2020-9-28 10:55:00
							 | 
						||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace bw\poster\template;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use bw\Common;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** 捐款证书绘制工具基类
							 | 
						||
| 
								 | 
							
								 * Class Common
							 | 
						||
| 
								 | 
							
								 * @package app\bwmall\model
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								abstract class  Base
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected $binaryData = null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected $temp_url = 'uploads/qrcode';//临时,目录
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected $path = '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected $fileName = '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected $data = [];//替换数据
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //抽象方法
							 | 
						||
| 
								 | 
							
								    abstract public  function draw($data = []);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**绘制图片方法
							 | 
						||
| 
								 | 
							
								     * @param array $config
							 | 
						||
| 
								 | 
							
								     * @param string $path
							 | 
						||
| 
								 | 
							
								     * @param string $fileName
							 | 
						||
| 
								 | 
							
								     * @return array
							 | 
						||
| 
								 | 
							
								     * @throws \app\common\exception\UploadException
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function out()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      if(!$this->binaryData)$this->draw();
							 | 
						||
| 
								 | 
							
								      if(!$this->binaryData)throw new \Exception('没有二进制流文件');
							 | 
						||
| 
								 | 
							
								        ob_start();
							 | 
						||
| 
								 | 
							
								        imagejpeg($this->binaryData);
							 | 
						||
| 
								 | 
							
								        imagedestroy($this->binaryData);
							 | 
						||
| 
								 | 
							
								        $res = ob_get_contents();//文件二进制流
							 | 
						||
| 
								 | 
							
								        ob_end_clean();
							 | 
						||
| 
								 | 
							
								        $outfile = $this->temp_url . '/';  //本地缓存地址
							 | 
						||
| 
								 | 
							
								        if (!file_exists('./' . $outfile . $this->path)) mkdir('./' . $outfile . $this->path, 0777, true);
							 | 
						||
| 
								 | 
							
								        $filepath = './' . $outfile . $this->path . '/' . $this->fileName;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        file_put_contents($filepath, $res);
							 | 
						||
| 
								 | 
							
								        //保存到fastadmin框架
							 | 
						||
| 
								 | 
							
								        $attachment = Common::setFastAdminFile($filepath, $this->fileName);
							 | 
						||
| 
								 | 
							
								        // TODO: 生成后删除源文件
							 | 
						||
| 
								 | 
							
								        @unlink($filepath);
							 | 
						||
| 
								 | 
							
								        return ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 设置模板保存路径
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function path($path){
							 | 
						||
| 
								 | 
							
								        $this->path = $path;
							 | 
						||
| 
								 | 
							
								        return $this;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function fileName($fileName){
							 | 
						||
| 
								 | 
							
								        $this->fileName = $fileName;
							 | 
						||
| 
								 | 
							
								        return $this;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function imageStream($imageStream){
							 | 
						||
| 
								 | 
							
								        $this->binaryData = $imageStream;
							 | 
						||
| 
								 | 
							
								        return $this;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @param $data
							 | 
						||
| 
								 | 
							
								     * @param null $value
							 | 
						||
| 
								 | 
							
								     * @return $this
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function setData($data,$value=null){
							 | 
						||
| 
								 | 
							
								        if(is_array($data)) $this->data = array_merge($this->data,$data);
							 | 
						||
| 
								 | 
							
								        if(is_string($data))$this->data[$data] = $value;
							 | 
						||
| 
								 | 
							
								        return $this;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**绘制图片方法DEMO
							 | 
						||
| 
								 | 
							
								     * @param array $config
							 | 
						||
| 
								 | 
							
								     * @param string $path
							 | 
						||
| 
								 | 
							
								     * @param string $fileName
							 | 
						||
| 
								 | 
							
								     * @return array
							 | 
						||
| 
								 | 
							
								     * @throws \app\common\exception\UploadException
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								//    public function draw($data = [])
							 | 
						||
| 
								 | 
							
								//    {
							 | 
						||
| 
								 | 
							
								//        if($data)$this->setData($data);
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//        //得到动态数据
							 | 
						||
| 
								 | 
							
								//        $background_image_url = config("site.fundraising_cert_tpl"); //背景图片
							 | 
						||
| 
								 | 
							
								//        if(!$background_image_url)throw new \Exception("缺少证书模板");
							 | 
						||
| 
								 | 
							
								//        $name = $this->data['name'];//人名
							 | 
						||
| 
								 | 
							
								//        $org_name = $this->data['org_name'];//组织名
							 | 
						||
| 
								 | 
							
								//        $createtime = $this->data['createtime'];//捐款时间
							 | 
						||
| 
								 | 
							
								//        $desc = $this->data['desc'];//描述
							 | 
						||
| 
								 | 
							
								//        $code = $this->data['code'];//捐款代码
							 | 
						||
| 
								 | 
							
								//        // 调用绘制方法
							 | 
						||
| 
								 | 
							
								//        //$background_base = xxxx
							 | 
						||
| 
								 | 
							
								//        //返回自身
							 | 
						||
| 
								 | 
							
								//        return $this->imageStream($background_base);
							 | 
						||
| 
								 | 
							
								//    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |