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下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php导出excel格式数据问题
Mar 11 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
PHP实现文件下载详解
Nov 27 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
php制作简单模版引擎
Apr 07 PHP
PHP下的浮点运算不准的解决方法
Oct 27 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 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跨站攻击实例分析
2014/10/28 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
菜单效果
2006/10/14 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
django中send_mail功能实现详解
2018/02/06 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
python怎么判断模块安装完成
2020/06/19 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
自我推荐书
2013/12/04 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
2015年党建工作总结
2015/03/30 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
药品开票员岗位职责
2015/04/15 职场文书
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA