php把图片内容写入文件,PHP实现往图片上写入文字功能

这篇文章主要为大家详细介绍了PHP实现往图片上写入文字功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。

网页开发过程中经常遇到需要往素材图片上写入会员信息等参数的场景。这里提供一份PHP代码可以实现此项功能<?php

/**

* PHP实现文字写入图片

*/

class wordsOnImg {

public $config = null;

/**

* @param $config 传入参数

* @param $config['file'] 图片文件

* @param $config['size'] 文字大小

* @param $config['angle'] 文字的水平角度

* @param $config['fontfile'] 字体文件路径

* @param $config['width'] 预先设置的宽度

* @param $config['x'] 开始写入时的横坐标

* @param $config['y'] 开始写入时的纵坐标

*/

public function __construct($config=null){

if(empty($config)){

return 'must be config';

}

$fileArr = explode(".",$config['file']);

$config['file_name'] = $fileArr[0];

$config['file_ext'] = $fileArr[1];

$this->config = $config;

}

/**

* PHP实现图片上写入实现文字自动换行

* @param $fontsize 字体大小

* @param $angle 角度

* @param $font 字体路径

* @param $string 要写在图片上的文字

* @param $width 预先设置图片上文字的宽度

* @param $flag  换行时单词不折行

*/

public function wordWrap($fontsize,$angle,$font,$string,$width,$flag=true) {

$content = "";

if($flag){

$words = explode(" ",$string);

foreach ($words as $key=>$value) {

$teststr = $content." ".$value;

$testbox = imagettfbbox($fontsize, $angle, $font, $teststr);

//判断拼接后的字符串是否超过预设的宽度

if(($testbox[2] > $width)) {

$content .= "\n";

}

$content .= $value." ";

}

}else{

//将字符串拆分成一个个单字 保存到数组 letter 中

for ($i=0;$i

$letter[] = mb_substr($string, $i, 1);

}

foreach ($letter as $l) {

$teststr = $content." ".$l;

$testbox = imagettfbbox($fontsize, $angle, $font, $teststr);

// 判断拼接后的字符串是否超过预设的宽度

if (($testbox[2] > $width) && ($content !== "")) {

$content .= "\n";

}

$content .= $l;

}

}

return $content;

}

/**

* 实现写入图片

* @param $text 要写入的文字

* @param $flag 是否直接输出到浏览器,默认是

*/

public function writeWordsToImg($text,$flag=true){

if(empty($this->config)){

return 'must be config';

}

//获取图片大小

$img_pathWH = getimagesize($this->config['file']);

//打开指定的图片文件

$im = imagecreatefrompng($this->config['file']);

#设置水印字体颜色

$color = imagecolorallocatealpha($im,0, 0, 255, 75);//蓝色

$have = false;

if(stripos($text,"
")!== false){

$have = true;

}

if($have){

$words_text = explode("
",$text);

$words_text[0] = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $words_text[0], $this->config['width']); //自动换行处理

$words_text[1] = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $words_text[1], $this->config['width']); //自动换行处理

$words_text[2] = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $words_text[2], $this->config['width']); //自动换行处理

imagettftext($im, $this->config['size'], $this->config['angle'], $this->config['x'], $this->config['y'], $color, $this->config['fontfile'], $words_text[0]);

imagettftext($im, $this->config['size'], $this->config['angle'], $this->config['x'], $this->config['y']+30, $color, $this->config['fontfile'], "  ".$words_text[1]);

imagettftext($im, $this->config['size'], $this->config['angle'], $img_pathWH[0]/2+70, $img_pathWH[1]-80, $color, $this->config['fontfile'], $words_text[2]);

if($flag){

header("content-type:image/png");

imagepng($im);

imagedestroy($im);

}

imagepng($im,$this->config['file_name'].'_1.'.$this->config['file_ext']);

imagedestroy($im);

}

$words_text = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $text, $this->config['width']); //自动换行处理

imagettftext($im, $this->config['size'], $this->config['angle'], $this->config['x'], $this->config['y'], $color, $this->config['fontfile'], $words_text);

if($flag){

header("content-type:image/png");

imagepng($im);

imagedestroy($im);

}

imagepng($im,$this->config['file_name'].'_1.'.$this->config['file_ext']);

imagedestroy($im);

}

}

$text = "Dear Kang
If you can hold something up and put it down, it is called weight lifting;if you can hold something up but can never put it down, it's called bueden bearing. Pitifully, most of people are bearing heavy burdens when they are in love.\n\nBeing nice to someone you dislike doesn't mean you're a hypocritical people. It means you're mature enough to tolerate your dislike towards them.
Mr. Kang";

$data = array(

'file'=>'20191226152410.png',

'size'=>12,

'angle'=>0,

'fontfile'=>'./Font/ChalkboardSE.ttc',

'width'=>270,

'x'=>20,

'y'=>70

);

//调用方法:

$wordsOnImgObj = new wordsOnImg($data);

$wordsOnImgObj->writeWordsToImg($text);

?>

以上就是PHP实现往图片上写入文字功能的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持361模板网。

感谢打赏,我们会为大家提供更多优质资源!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值