文档章节

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

letwang
 letwang
发布于 2013/12/26 16:03
字数 345
阅读 2696
收藏 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
粉丝 153
博文 64
码字总数 77157
作品 1
南京
技术主管
加载中

评论(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
微信小程序 | 使用 canvas 生成朋友圈分享图片并保存到手机相册

小程序只能转发给好友,或者转发到微信群,并不能转发到朋友圈,那么朋友圈的巨大流量应该怎么利用起来呢? 目前来看,很多小程序的做法是生成一张带小程序码的图片,然后用户可以分享图片到...

yongxinz
09/04
0
0
HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础

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

扔物线
2017/07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SharedPreferences 的使用,commit和apply两个方法的区别

SharedPreferences sp = getSharedPreferences("config",MODE_PRIVATE); //第一个参数:存储文件的名称,第二个参数文件的访问权限,通常MODE_PRIVATE是私有存储 sp.edit().putString("USERNAM...

lanyu96
9分钟前
1
0
02-《Apache Tomcat 9 User Guide》之简介

1.Introduction - 介绍 For administrators and web developers alike, there are some important bits of information you should familiarize yourself with before starting out. This d......

飞鱼说编程
13分钟前
1
0
关于maven的使用,这一篇基本就够了

2.1 关于maven 每一个工具的出现都有其历史意义,而Maven的出现则是开发者对于不同的项目都要有自己的Ant构建文件,而这些文件都各不相同,而且JAR被检入CVS(Concurrent Version System),...

小小明童鞋
15分钟前
11
0
从xtrabackup完整备份恢复单个innodb表

现在大多数同学在线上采取的备份策略都是xtrabackup全备+binlog备份,那么当某天某张表意外的删除那么如何从xtrabackup全备中恢复呢?从mysql 5.6版本开始,支持可移动表空间(Transportable...

IT--小哥
20分钟前
1
0
百度AI攻城狮,用TensorFlow API训练目标检测模型(浣熊超可爱)

今天,人工智能正影响我们生产、生活的方方面面。10月10日,为期三天的2018华为全联接大会在上海拉开帷幕,此次大会以“+智能,见未来”为主题,发布了AI战略及全球领先的全栈全场景AI解决方...

Python唱情歌
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部