画图工具

画图工具主要用来绘制海报、二维码,目前使用在绘制二维码功能上,海报不建议使用画图工具;可以改为前端生成海报。对于效率要求不高的情况下可以使用。

内置方法总览

初始化方法

public static function instance()

创建一个新图象

public function createFrom(string $file): array

放入字体

public function pushFontValue()

放入图片

public function pushImageValue()

创建背景

public function createTrueColor(int $w = 0, int $h = 0)

开始画图

public function starDrawChart(bool $force = false): string

辅助方法

setFileName(string $fileName) 设置文件名

setPath(string $path) 设置存放路径

setImageType(string $imageType) 设置图片类型

setBackgroundHeight(int $backgroundHeight) 设置背景高

setBackgroundWidth(int $backgroundWidth) 设置背景宽

setFontSize(int $fontSize) 设置字体大小

setFontColor($fontColor) 设置字体颜色

setFontLeft(int $fontLeft) 设置字体距离左侧位置

setFontTop(int $fontTop) 设置字体距离顶部位置

setFontText(string $fontText) 设置文字

setFontPath(string $fontPath) 设置字体文件路径

setFontAngle(int $fontAngle) 设置字体角度

setImageUrl(string $imageUrl) 设置图片路径

setImageLeft(int $imageLeft) 设置图片距离左侧位置

setImageTop(int $imageTop) 设置图片距离顶部位置

setImageRight(int $imageRight) 设置图片距离左侧位置

setImageStream(bool $imageStream) 设置图片是否未流文件

setImageBottom(int $imageBottom) 设置图片距离底部位置

setImageWidth(int $imageWidth) 设置图片宽

setImageHeight(int $imageHeight) 设置图片高

setImageOpacity(int $imageOpacity) 设置图片透明度

使用方法

使用一个背景图和一个二维码生成海报


use crmeb\utils\Canvas;

$canvas = Canvas::instance();
//放入第一张图作为图层1,也可以当做为背景图
$canvas->setImageUrl(public_path().'statics/qrcode/offlines.jpg')
            ->setImageHeight(730)
            ->setImageWidth(500)
            ->pushImageValue();

//图片绝对路径
$v = '/statics/qrcode.png';
//放入第二张图做图层2
 $canvas->setImageUrl($v)
             ->setImageHeight(344)
             ->setImageWidth(344)
             ->setImageLeft(76)
             ->setImageTop(120)
             ->pushImageValue();

 //生成图片的名称
 $name = '2qrcode';
 //图片类型,可选:jpg、jpeg、png、gif
 $imageType = 'jpg';
 //图片存放地址
 $path = 'uploads/offline/';

 //开始画图
 $imageUrl = $canvas->setFileName($name)
             ->setImageType($imageType)
             ->setPath($path)
             ->setBackgroundWidth(500)
             ->setBackgroundHeight(720)
             ->starDrawChart();

//返回生成图片的相对路径位置
var_dump($imageUrl);

/*
uploads/offline/2qrcode.jpg
*/

使用一个背景图和多张二维码生成多张图片

画布的背景大小可以通过setBackgroundWidthsetBackgroundHeight来设置

放入第二张图的位置(例如二维码),可以通过setImageLeftsetImageTop来设置

位置的调整可以通过生成之后的图片测量或者又设计提供尺寸,就可以画出想要的海报图片

use crmeb\utils\Canvas;

$canvas = Canvas::instance();

//放入第一张图作为图层1,也可以当做为背景图
$canvas->setImageUrl(public_path().'statics/qrcode/offlines.jpg')
            ->setImageHeight(730)
            ->setImageWidth(500)
            ->pushImageValue();

$data = [ ];
$path = 'uploads/offline/';
$imageType = 'jpg';

//循环画出两个图片
foreach(['/statics/qrcode.png','/statics/qrcode_user.png'] as $key => $val) {
     $name = 'offline_' . $key;

     $canvas->setImageUrl($val)
                  ->setImageHeight(344)
                 ->setImageWidth(344)
                 ->setImageLeft(76)
                 ->setImageTop(120)
                 ->pushImageValue();

      $image = $canvas->setFileName($name)
                           ->setImageType($imageType)
                        ->setPath($path)
                        ->setBackgroundWidth(500)
                        ->setBackgroundHeight(720)
                        ->starDrawChart();
    $data[] = $image;
}


var_dump($data);

/*
[
    "uploads/offline/offline_0.jpg",
    "uploads/offline/offline_1.jpg",
]
*/