Intervention/image - 图片添加图片/文字水印

    public function generatePoster()
    {
        // 检查是否需要重新生成
        if (!$this->needGenerateNewPoster()) {
            return null;
        }

        // 图片合成
        $text = $this->self_sn;

        // 字体大小
        $font_size = 50;

        // 获取文字大小
        $font = new Font($text);
        $font->file(public_path('fonts/YaHei.ttf'));
        $font->size($font_size);

        $size = $font->getBoxSize();

        // 自适应图片宽高
        $width  = $size['width'] > 640 ? $size['width'] + 40 : 640;
        $height = $width + 100;

        // 动态生成画布
        $canvas = Image::canvas($width, $height, 'fff');

        // 更改小程序码大小
        $mini_code = Image::make(storage_path('app/public/' . $this->mini_code));
        $mini_code->resize($width - 40, $width - 40);

        // 插入小程序码
        $canvas->insert($mini_code, 'top-left', 20, 20);

        // 插入文字
        $canvas->text($text, ($width - $size['width']) / 2, $height - 30, function (Font $font) use ($font_size) {
            $font->file(public_path('fonts/YaHei.ttf'));
            $font->size($font_size);
        });

        // 图片保存路径
        $path = storage_path('app/public/equipment_poster');

        if (!is_dir($path)) {
            mkdir($path);
        }

        $filename = md5($this->id . microtime());

        $canvas->save($path . "/{$filename}.png");

        $this->mini_code_poster = "equipment_poster/{$filename}.png";
        $this->save();

        $this->savePosterMd5();

        return null;
    }
海到无涯天作案,山登绝顶我为峰
slowlyo
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!