php使用Imagick生成图片的方法


Posted in PHP onJuly 31, 2015

本文实例讲述了php使用Imagick生成图片的方法。分享给大家供大家参考。具体如下:

这里使用Imagick 生成图片
解决了图片写中文文字乱码问题,添加支持的字体

public function getPic(){
  header('Content-Type: text/html; charset=utf-8');
  $text = '中粮屯河(sh600737)';//中粮屯河(sh600737)
  $watermark = '305988103123zczcxzas';
  $len = strlen($text);
  $width = 10.5*(($len-8)/3*2+8);
  $height = 26;
  $imagick = new Imagick();
  $color_transparent = new ImagickPixel('#ffffff'); //transparent 透明色
  $imagick->newImage($width, $height, $color_transparent, 'jpg');
  //$imagick->borderimage('#000000', 1, 1);
  $style['font_size'] = 12;
  $style['fill_color'] = '#000000';
  for($num= strlen($watermark); $num>=0; $num--){
   $this->add_text($imagick,substr($watermark, $num,1), 2+($num*8), 30, 1,$style);
   $this->add_text($imagick,substr($watermark, $num,1), 2+($num*8), 5, 1,$style);
  }
  //return;
  $style['font_size'] = 20;
  $style['fill_color'] = '#FF0000';
  $style['font'] = './msyh.ttf'; ///微软雅黑字体 解决中文乱码
  //$text=mb_convert_encoding($text,'UTF-8'); //iconv("GBK","UTF-8//IGNORE",$text);
  $this->add_text($imagick,$text, 2, 20, 0,$style);
  header ( 'Content-type: ' . strtolower ($imagick->getImageFormat ()) );
  echo $imagick->getImagesBlob ();
}
// 添加水印文字
public function add_text(& $imagick, $text, $x = 0, $y = 0, $angle = 0, $style = array()) {
  $draw = new ImagickDraw ();
  if (isset ( $style ['font'] ))
   $draw->setFont ( $style ['font'] );
  if (isset ( $style ['font_size'] ))
   $draw->setFontSize ( $style ['font_size'] );
  if (isset ( $style ['fill_color'] ))
   $draw->setFillColor ( $style ['fill_color'] );
  if (isset ( $style ['under_color'] ))
   $draw->setTextUnderColor ( $style ['under_color'] );
  if (isset ( $style ['font_family'] ))
   $draw->setfontfamily( $style ['font_family'] );
  if (isset ( $style ['font'] ))
   $draw->setfont($style ['font'] );
  $draw->settextencoding('UTF-8');
  if (strtolower ($imagick->getImageFormat ()) == 'gif') {
   foreach ( $imagick as $frame ) {
    $frame->annotateImage ( $draw, $x, $y, $angle, $text );
   }
  } else {
   $imagick->annotateImage ( $draw, $x, $y, $angle, $text );
  }
}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
神盾加密解密教程(三)PHP 神盾解密工具
Jun 08 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 PHP
php自动加载代码实例详解
Feb 26 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 #PHP
php自定义类fsocket模拟post或get请求的方法
Jul 31 #PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 #PHP
PHP中filter函数校验数据的方法详解
Jul 31 #PHP
PHP代码实现爬虫记录――超管用
Jul 31 #PHP
PHP 前加at符合@的作用解析
Jul 31 #PHP
PHP查看当前变量类型的方法
Jul 31 #PHP
You might like
用PHP调用Oracle存储过程
2006/10/09 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
可输入的下拉框
2006/06/19 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
Python闭包思想与用法浅析
2018/12/27 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python的pygame安装教程详解
2020/02/10 Python
Python ATM功能实现代码实例
2020/03/19 Python
基于python 取余问题(%)详解
2020/06/03 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
小学生操行评语
2014/04/22 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
英文演讲稿开场白
2014/08/25 职场文书
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js