php图片上面写文字,输出图片
<?php /* param $image 图象资源 param size 字体大小 param angle 字体输出角度 param showX 输出位置x坐标 param showY 输出位置y坐标 param font 字体文件位置 param content 要在图片里显示的内容 */ class showChinaText { var $text = 'php网站程序开发'; var $font = 'fonts/simsun.ttc'; //如果没有要自己加载到相应的目录下(本地www) var $angle = 0; var $size = 15; var $showX = 100; var $showY = 160; var $text0 = '2011 年 12 月 12 日'; var $angle0 = 0; var $showX0 = 230; var $showY0 = 200; var $text1 = '新郎'; var $angle1 = 20; var $showX1 = 135; var $showY1 = 285; var $text2 = '新娘'; var $angle2 = 20; var $showX2 = 300; var $showY2 = 285; var $text3 = '北京市海淀区香格里拉酒店'; var $angle3 = 0; var $showX3 = 120; var $showY3 = 445; var $text4 = '上午十一点整'; var $angle4 = 0; var $showX4 = 305; var $showY4 = 480; function showChinaText($showText = '') { $this->text = ! isset ( $showText ) ? $showText : $this->text; $this->show (); } function createText($instring) { $outstring = ""; $max = strlen ( $instring ); for($i = 0; $i < $max; $i ++) { $h = ord ( $instring [$i] ); if ($h >= 160 && $i < $max - 1) { $outstring .= substr ( $instring, $i, 2 ); $i ++; } else { $outstring .= $instring [$i]; } } return $outstring; } function show() { //输出头内容 Header ( "Content-type: image/png" ); //建立图象 //$image = imagecreate(400,300); $image = imagecreatefromjpeg ( "01.jpg" ); //这里的图片,换成你的图片路径 //定义颜色 $red = ImageColorAllocate ( $image, 255, 0, 0 ); $white = ImageColorAllocate ( $image, 255, 255, 255 ); $black = ImageColorAllocate ( $image, 0, 0, 0 ); //填充颜色 //ImageFilledRectangle($image,0,0,200,200,$red); //显示文字 $txt = $this->createText ( $this->text ); $txt0 = $this->createText ( $this->text0 ); $txt1 = $this->createText ( $this->text1 ); $txt2 = $this->createText ( $this->text2 ); $txt3 = $this->createText ( $this->text3 ); $txt4 = $this->createText ( $this->text4 ); //写入文字 imagettftext ( $image, $this->size, $this->angle, $this->showX, $this->showY, $white, $this->font, $txt ); imagettftext ( $image, $this->size, $this->angle0, $this->showX0, $this->showY0, $white, $this->font, $txt0 ); imagettftext ( $image, $this->size, $this->angle1, $this->showX1, $this->showY1, $white, $this->font, $txt1 ); imagettftext ( $image, $this->size, $this->angle2, $this->showX2, $this->showY2, $white, $this->font, $txt2 ); imagettftext ( $image, $this->size, $this->angle3, $this->showX3, $this->showY3, $white, $this->font, $txt3 ); imagettftext ( $image, $this->size, $this->angle4, $this->showX4, $this->showY4, $white, $this->font, $txt4 ); //ImageString($image,5,50,10,$txt,$white); //显示图形 imagejpeg ( $image ); imagegif ( $image, "a2.jpg" ); ImageDestroy ( $image ); } } ?> <?php //使用 $s = new showChinaText (); ?>
改造后版本:背景图片自定义上传
<?php class ChinaText { var $font = 'simsun.ttc'; //如果没有要自己加载到相应的目录下(本地www) var $size = 15; var $multexts = null; var $bg=''; function ChinaText($title_text=null,$bg='11.jpg') { $this->multexts = $title_text; $this->bg = $bg; $this->show (); } function show() { //输出头内容 Header ( "Content-type: image/png" ); //建立图象 //$image = imagecreate(400,300); $image = imagecreatefromjpeg ( "./data/upload/".$this->bg); //这里的图片,换成你的图片路径 //定义颜色 $red = ImageColorAllocate ( $image, 255, 0, 0 ); $white = ImageColorAllocate ( $image, 255, 255, 255 ); $black = ImageColorAllocate ( $image, 0, 0, 0 ); //填充颜色 //ImageFilledRectangle($image,0,0,200,200,$red); foreach ($this->multexts as $tx){ imagettftext ( $image, $this->size, $tx['angle'], $tx['showX'], $tx['showY'], $black, $this->font, $tx['text'] ); } //显示图形 imagejpeg ( $image ); //imagegif ( $image, "a2.jpg" ); //ImageDestroy ( $image ); } }
控制器部分:
public function test2(){ $array = array( array('text'=>'aaaopop','angle'=>0,'showX'=>100,'showY'=>160), array('text'=>'bbb成果,没有任何','angle'=>0,'showX'=>100,'showY'=>190), array('text'=>'cccqqqqq踩踩','angle'=>0,'showX'=>100,'showY'=>220), array('text'=>'ddd 踩踩踩踩踩','angle'=>0,'showX'=>100,'showY'=>250), ); $s = new ChinaText($array); } public function test3(){ //$image = $_FILES['bg']; $text = $_POST['text']; //上传图片 //上传目录 $imagebg = $this->_upload($_FILES['bg'], '/'); if ($imagebg['error']) { $this->error($imagebg['info']); } else { $data['imagebg'] = $imagebg['info'][0]['savename']; //echo $data['imagebg']; } $title['showY']=100; $title_text = array(); for ( $i=0;$i<count($text);$i++){ $title['text']=$text[$i]; $title['angle']=0; $title['showX']=100; $title['showY']+=50*$i; $title_text[] = $title; } $s=new ChinaText($title_text,$data['imagebg']); }
html :
<form action="{:U('test/test3')}" method="post" enctype="multipart/form-data"> <span>背景图片:</span> <input type="file" name='bg'><br><br> <span>文字区域:</span> <input type="text" name="text[]"><br><br> <input type="text" name="text[]"><br><br> <input type="text" name="text[]"><br><br> <input type="submit" value="生成"> </form>