// +---------------------------------------------------------------------- // | 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); // } }