文档章节

PHP合成图片、生成文字、居中对齐、画线、矩形、三角形、多边形、图片抗锯齿、不失真 高性能源码示例

letwang
 letwang
发布于 2013/12/26 16:03
字数 345
阅读 2615
收藏 19
function generateImg($source, $text1, $text2, $text3, $font = './msyhbd.ttf') {
	$date = '' . date ( 'Ymd' ) . '/';
	$img = $date . md5 ( $source . $text1 . $text2 . $text3 ) . '.jpg';
	if (file_exists ( './' . $img )) {
		return $img;
	}

	$main = imagecreatefromjpeg ( $source );

	$width = imagesx ( $main );
	$height = imagesy ( $main );

	$target = imagecreatetruecolor ( $width, $height );

	$white = imagecolorallocate ( $target, 255, 255, 255 );
	imagefill ( $target, 0, 0, $white );

	imagecopyresampled ( $target, $main, 0, 0, 0, 0, $width, $height, $width, $height );

	$fontSize = 18;//像素字体
	$fontColor = imagecolorallocate ( $target, 255, 0, 0 );//字的RGB颜色
	$fontBox = imagettfbbox($fontSize, 0, $font, $text1);//文字水平居中实质
	imagettftext ( $target, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), 190, $fontColor, $font, $text1 );

	$fontBox = imagettfbbox($fontSize, 0, $font, $text2);
	imagettftext ( $target, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), 370, $fontColor, $font, $text2 );

	$fontBox = imagettfbbox($fontSize, 0, $font, $text3);
	imagettftext ( $target, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), 560, $fontColor, $font, $text3 );

	//imageantialias($target, true);//抗锯齿,有些PHP版本有问题,谨慎使用

	imagefilledpolygon ( $target, array (10 + 0, 0 + 142, 0, 12 + 142, 20 + 0, 12 + 142), 3, $fontColor );//画三角形
	imageline($target, 100, 200, 20, 142, $fontColor);//画线
	imagefilledrectangle ( $target, 50, 100, 250, 150, $fontColor );//画矩形

	//bof of 合成图片
	$child1 = imagecreatefromjpeg ( 'http://gtms01.alicdn.com/tps/i1/T1N0pxFEhaXXXxK1nM-357-88.jpg' );
	imagecopymerge ( $target, $child1, 0, 400, 0, 0, imagesx ( $child1 ), imagesy ( $child1 ), 100 );
	//eof of 合成图片

	@mkdir ( './' . $date );
	imagejpeg ( $target, './' . $img, 95 );

	imagedestroy ( $main );
	imagedestroy ( $target );
	imagedestroy ( $child1 );
	return $img;
}
//http://my.oschina.net/cart/
generateImg ( 'http://1.popular.sinaapp.com/munv/pic.jpg', 'my.oschina.net/cart', 'PHP文字水平居中', '3个字' );
exit ();




© 著作权归作者所有

共有 人打赏支持
letwang
粉丝 141
博文 66
码字总数 74230
作品 0
南京
技术主管
加载中

评论(3)

田景文
田景文

引用来自“胡神父”的评论

字没有被显示出来啊
是没有载入字体
letwang
letwang
哈哈 字被其他图片盖住了吧,你调整位置即可
胡神父
胡神父
字没有被显示出来啊
Android 的Paint(画笔)及Canvas(画布)

要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上。Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法如下: se...

双鱼座1990
2015/12/04
6.1K
1
Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形

1、首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host th......

buleberry
2014/03/17
0
0
Android 圆角、圆形 ImageView 实现

一、 特点 基于AppCompatImageView扩展 支持圆角、圆形显示 可绘制边框,圆形时可绘制内外两层边框 支持边框不覆盖图片 可绘制遮罩 ...... 二、基本原理 我们要实现的图片控件继承自,它是的...

Othershe
06/25
0
0
HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础

从今天开始,HenCoder 就正式开讲知识技能了。按照我的计划,第一季是 UI,UI 一共分为三部分:绘制、布局和触摸反馈。本期是绘制部分的第一期。绘制大概会用 5~6 期的时间讲完,整个 UI 的绘...

扔物线
2017/07/10
0
0
CSS使用的一些小技巧/高级进阶(持续更新)

最近闲暇时间在看鑫爷的《CSS世界》,内容真的是非常精彩,很多细节分析的非常透彻,值得推荐。在日常开发中实现某种效果有很多方式,但是下面的我以前都很少用到,原来css还可以这么玩 😂...

giants_one
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

新工作与老项目

新的工作不知不觉的干了一个多月了。怎么说呢,跟想象中的差别不少,本来想的能进来跟大公司的同事能有很多交流,能在团队中跟大牛学习更快。结果公司的这个项目上只有两个程序员,项目是十年...

zypy333
10分钟前
0
0
mysql 在windows的安装

mysql 在windows的安装。 mysql64位的server的下载地址是: https://dev.mysql.com/downloads/mysql/ 使用的是5.7版本。 下载安装包,解压至D:\mysql\mysql-5.7.23-winx64\ 在D:\mysql\mysq...

lxzh504
22分钟前
1
0
云技术、大数据(hadoop)入门常见问题回答

当我们学习一门新技术的时候,我们总是产生各种各样的问题,这些问题整理出来,包括该 1.如何学习hadoop? 2.hadoop常见问题? 3.还有hbase、hive安装使用等? 你知道搭建hadoop平台需要些什...

董黎明
23分钟前
1
0
小程序自定义底部tab

场景 1.tabBar是在内页而非首页,这时就不得不自定义一个tabBar了 2.自定义风格 3.子页数量超过5个,得到更多了tab 4.改变点击tab默认事件,比如出登录界面,或者弹出上拉子菜单等 步骤 1.照...

萤火的萤火
28分钟前
1
0
shell炫技

1.为脚本添加“--help” #!/bin/shif [ ${#@} -ne 0 ] && [ "${@#"--help"}" = "" ]; then printf -- '...help...\n'; exit 0;fi; 2.输出字体添加颜色 https://misc.flogisoft.com......

HJCui
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部