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函数utf8转gb2312编码
Dec 21 PHP
php公用函数列表[正则]
Feb 22 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
PHP 数组基础知识小结
Aug 20 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
May 29 PHP
php解析xml方法实例详解
May 12 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
php微信开发之音乐回复功能
Jun 14 PHP
Laravel框架路由管理简单示例
May 07 PHP
php给数组赋值的实例方法
Sep 26 PHP
php 使用 __call实现重载功能示例
Nov 18 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
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
JS闭包原理及其使用场景解析
2020/12/03 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
python绘制多个曲线的折线图
2020/03/23 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python global关键字的用法详解
2019/09/05 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
开业庆典邀请函
2014/01/08 职场文书
全国助残日活动总结
2015/05/11 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
初三英语教学反思
2016/02/15 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
Java8中接口的新特性使用指南
2021/11/01 Java/Android
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android