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 什么是PEAR?(第三篇)
Mar 19 PHP
php下获取客户端ip地址的函数
Mar 15 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
Yii调试SQL的常用方法
Jul 09 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
推荐十款免费 WordPress 插件
Mar 24 PHP
基于thinkPHP框架实现留言板的方法
Oct 17 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 PHP
Laravel find in set排序实例
Oct 09 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
JS 的应用开发初探(mootools)
2009/12/19 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
Python 比较两个数组的元素的异同方法
2017/08/17 Python
python放大图片和画方格实现算法
2018/03/30 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
python deque模块简单使用代码实例
2020/03/12 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
外国语学院毕业生自荐信
2013/10/28 职场文书
旅游个人求职信范文
2014/01/30 职场文书
机关搬迁方案
2014/05/18 职场文书
学雷锋倡议书
2015/01/19 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
Java使用HttpClient实现文件下载
2022/08/14 Java/Android