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语法(3)
Oct 09 PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 PHP
php常用hash加密函数
Nov 22 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 PHP
在 Laravel 6 中缓存数据库查询结果的方法
Dec 11 PHP
PHP实现简单注册登录系统
Dec 28 PHP
PHP 时间处理类Carbon
May 20 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+MySql编写聊天室
2006/10/09 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
JavaScript this调用规则说明
2010/03/08 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
vue axios 二次封装的示例代码
2017/12/08 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
python+django快速实现文件上传
2016/10/24 Python
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
反邪教警示教育方案
2014/05/13 职场文书
领导干部学习心得体会
2016/01/23 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python