您现在的位置是:网站首页>>PHP>>php

使用imagine/imagine实现制作一个图片

发布时间:2020-09-24 17:06:43作者:wangjian浏览量:101点赞量:0

    在一般的后台系统中,管理员一般有一个默认的头像,有的系统是直接给没有设置头像的用户分配一个默认的图片作为默认头像,但是有的系统是根据管理员的用户名来生成一张默认的图片,这里我们使用imagine/imagine来实现根据指定的文字生成一张图片

    imagine/imagine文档地址:https://imagine.readthedocs.io/en/stable/

    一:安装imagine/imagine

    composer require imagine/imagine

    二:imagine/imagine简单方法介绍

    1:imagine/imagine实例化

    在使用imagine/imagine之前,我们需要对imagine/imagine进行实例化,如:

    $imagine = new \Imagine\Gd\Imagine();//实例化Imagine类

    或者

    $imagine = new \Imagine\Imagick\Imagine();

    2:打开一个指定的图像

    $image = $imagine->open('image.jpg');

    3:创建一个指定尺寸和背景色的空白图像

    $palette = new \Imagine\Image\Palette\RGB();
    $size  = new \Imagine\Image\Box(400, 300);//设置空白图像尺寸为400*300
    $color = $palette->color('#000', 0);//设置空白图像的背景色为#000,透明度为0,透明度的取值为0-100,值越大透明度越小,0表示完全透明,100表示完全不透明
    $image = $imagine->create($size, $color);//创建空白图像

    4:给指定的图像设置尺寸

    $size = new \Imagine\Image\Box(200, 200);
    $image->resize($size)

    5:给指定的图像增加文字水印

    $text = '测试';//水印文字
    $fontPath = 'fonts/msyh.ttf';//水印文字的字体
    $white = $palette->color('fff');//水印文字的颜色
    $font = $imagine->font($fontPath, 45, $white);//文字配置,参数一为设置字体,参数二为设置文字大小,参数三为设置文字颜色
    $point = new \Imagine\Image\Point(40, 75);//设置文字的位置
    $image->draw()
        ->text($text, $font, $point);

    6:保存图片

    $fileName = 'test.jpg';
    $image->save($fileName, ['jpeg_quality' => 100]);//参数一为保存的图片地址,参数二为保存图片的质量等配置,常见配置可参考imagine/imagine文档

    三:使用imagine/imagine实现制作一个指定文字的图片

    实例如下:

    $imagine = new \Imagine\Gd\Imagine();//实例化Imagine类
    //设置图片的尺寸和背景颜色
    $size = new \Imagine\Image\Box(200, 200);//设置图片的宽高
    $palette = new \Imagine\Image\Palette\RGB();
    $color = $palette->color('#000', 0);//设置图片的背景颜色
    //创建一个指定尺寸和指定背景的图片
    $image = $imagine->create($size, $color);
    //在图片上增加文字
    $text = '测试';
    $fontPath = 'fonts/msyh.ttf';
    $white = $palette->color('fff');
    $font = $imagine->font($fontPath, 45, $white);//文字配置,参数一为设置字体,参数二为设置文字大小,参数三为设置文字颜色
    $point = new \Imagine\Image\Point(40, 75);//设置文字的位置
    $image->draw()
        ->text($text, $font, $point);
    //保存图片
    $fileName = 'test.jpg';
    $image->save($fileName, ['jpeg_quality' => 100]);

    根据如上的代码就可以生成一个指定文字的图片,如:

    image.png

0 +1