文档章节

php使用Imagick给图片写文字加阴影效果

FrogFun
 FrogFun
发布于 2017/03/16 19:55
字数 373
阅读 69
收藏 0

之前业务中用到的一个图片效果处理 备份下来,方便之后使用.

  • 给图片上写文字的需求很常见. 实现起来也比较轻松

简单例子:

    $canvas = new Imagick();  
    $canvas->newImage(500, 200, 'white');  
    $canvas->setImageFormat('png');  
      
    $draw = new ImagickDraw();  
    $draw->setFillColor(new ImagickPixel('#f00'));  
    $draw->setFontSize(50);  
    $draw->annotation(100, 60, 'welcome');  
    $canvas->drawImage($draw);  
      
    $draw->setFillColor(new ImagickPixel('#fff'));  
    $draw->setFontSize(50);   
    $draw->annotation(100, 120, 'welcome');  
    $canvas->drawImage($draw);  
      
    header("Content-type: image/{$canvas->getImageFormat()}");  
    echo $canvas->getImageBlob();  

创建了一个白色底图, 并在上边写了两行字

一行红色的, 一行白色的. 由于底图颜色也是白色,所以 白色的字是看不到的

运行效果

  • 给文字加阴影

遇到同颜色的情况, 大部分都会采用给文字加阴影的方式

代码:

    $canvas = new Imagick();  
    $canvas->newImage(500, 200, 'white');  
    $canvas->setImageFormat('png');  
      
    $text = new Imagick();  
    $text->newImage(500, 200, 'none');  
    $text->setImageFormat('png');  
      
    $draw = new ImagickDraw();  
    $draw->setFillColor(new ImagickPixel('#f00'));  
    $draw->setFontSize(50);  
    $draw->annotation(100, 60, 'welcome');  
    $text->drawImage($draw);  
      
    $draw->setFillColor(new ImagickPixel('#fff'));  
    $draw->setFontSize(50);   
    $draw->annotation(100, 120, 'welcome');  
    $text->drawImage($draw);  
      
    $shadow_layer = $text->clone();  
    $shadow_layer->setImageBackgroundColor(new ImagickPixel('#555'));  
    $shadow_layer->shadowImage(80, 0.8, 0, 0);  
    $shadow_layer->compositeImage($text, Imagick::COMPOSITE_OVER, 0, 0 );  
    $canvas->compositeImage($shadow_layer, imagick::COMPOSITE_DEFAULT, 0, 0);  
      
    header("Content-type: image/{$canvas->getImageFormat()}");  
    echo $canvas->getImageBlob();  

给文字设置阴影效果后 看起来舒服多啦

运行效果

© 著作权归作者所有

FrogFun
粉丝 2
博文 6
码字总数 2717
作品 0
昌平
程序员
私信 提问
ImageMagick 图片处理 函数说明和使用举例

ImageMagick 函数说明和使用举例,作者:打打 QQ:1069576404 首先,加载phpimagick.dll扩展模块,也就是在网上找到phpimagick.dll文件,把它放在php.ini同级的目录中,然后,在php.ini里加上...

云栖希望。
2017/12/04
0
0
在yii2应用中,使用imagine库生成分享图实战。

这个需求现在特别常见,比如生成小程序分享图、生成朋友圈分享图等等,一般是文字 + 二维码 + 背景模板。今天我们使用imagine来完成这件事情,并作用于网站的面试题模块。 我规划的分享图布局...

阿北2017
2018/09/28
188
0
Flutter RichText支持自定义文字背景

extended text 相关文章 Flutter RichText支持图片显示和自定义图片效果 Flutter RichText支持自定义文本溢出效果 Flutter RichText支持自定义文字背景 之前介绍过了Extended text,老规矩上...

法的空间
03/22
0
0
Linux下php安装imagick

说明: php安装目录:/usr/local/php5 php.ini配置文件路径:/usr/local/php5/etc/php.ini Nginx安装目录:/usr/local/nginx Nginx网站根目录:/usr/local/nginx/html 1、安装编译工具 yum ...

jims
2016/10/01
21
0
Windows php5.6配置imagick 基于Apache/IIS

安装Imagick确实是很恼火的事情,网上的讨论一大堆,中文英文都有,我也在这里卡了很久,这次基本上算是弄明白了,记录一下。 Imagick有点像MySQL的安装方式一样,首先服务器需要安装MySQL S...

xshanj2
2016/12/19
153
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部