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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
5.PHP的其他功能
Oct 09 PHP
PHP实现时间轴函数代码
Oct 08 PHP
PHP安全防范技巧分享
Nov 03 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
php短网址和数字之间相互转换的方法
Mar 13 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
DWZ+ThinkPHP开发时遇到的问题分析
Dec 12 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
Oct 03 PHP
PHP实现两种排课方式
Jun 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分页显示制作详细讲解
2006/12/05 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python操作Excel之xlsx文件
2017/03/24 Python
python爬虫之百度API调用方法
2017/06/11 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
python版DDOS攻击脚本
2019/06/12 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
台湾良兴购物网:EcLife
2019/12/01 全球购物
学习十八大报告感言
2014/02/28 职场文书
一年级学生评语大全
2014/04/21 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
投标服务承诺书
2014/05/28 职场文书
银行招聘自荐信
2015/03/06 职场文书
运动会致辞稿
2015/07/29 职场文书
Vue的生命周期一起来看看
2022/02/24 Vue.js