糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > thinkphp框架 如何利用GD库在图片上编写文字(代码范例)

thinkphp框架 如何利用GD库在图片上编写文字(代码范例)

时间:2023-03-29 11:15:41

相关推荐

thinkphp框架 如何利用GD库在图片上编写文字(代码范例)

后端开发|php教程

thinkphp,GD库

后端开发-php教程

本篇文章的主要内容是关于用GD库在图片上编写文字的代码范例,具有一定的参考价值,感兴趣的朋友可以学习了解一下,希望对你有帮助。

抽奖游戏源码下载,vscode蓝色背景主题,ubuntu 云,tomcat 深入,sqlite博客园,超市的网页设计分析,虚拟空间sql数据库,云服务器用处,java断点续传插件,php好看的前端框架,推特爬虫,php导出csv,seo优化考核,springboot背景,织梦调用缩略图标签,网站底部代码特效,网页计时工具,论坛门户电影模板,怎么还织梦后台,页面展示模版,基于jsp的图书管理系统源代码,app store复制小程序lzw

THINK_IMAGE = new Image(); $this->THINK_UPLOAD = new Upload(); } /** 保存base64文件* $img string base64类型的文件* $type string 保存的文件类型*app_user_head_img 用户头像***/ public function saveImg_base64($img = null , $type = null) { //获取保存图片配置 $imgConfig_savePath = C("img_save.save_path"); $imgConfig_size= C("img_save.size"); $saveFlag = false;// dump($imgConfig_savePath[$type]);// dump($imgConfig_size); if (preg_match(/^(data:\s*image\/(\w+);base64,)/, $img, $result) && $imgConfig_savePath[$type]) { $img_ext= $result[2]; //图片后缀 $img_header = $result[1];//图片头信息 $new_file_name= date(Ymd)./.uniqid()...$img_ext; $origin_img_path = \;//原图的保存路径 $origin_img_save_flag = true;// foreach($imgConfig_savePath[$type] as $k => $v) {if(!is_dir($v.date(Ymd))){ mkdir($v.date(Ymd),0777,true);}if ($k == origin){ //先保存一份原图,然后其他尺寸的保存直接调用原图路径origin_img_path. $origin_res = file_put_contents($v.$new_file_name, base64_decode(str_replace($img_header, \, $img))); if (!$origin_res) { $origin_img_save_flag = false; break; } else { $saveFlag = $new_file_name; $origin_img_path = $v.$new_file_name; $this->THINK_IMAGE->open($origin_img_path); }}else{ if ($origin_img_save_flag) { $width = $imgConfig_size[$type][$k][w]; $height = $imgConfig_size[$type][$k][h]; $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$new_file_name); }} } } return $saveFlag; } /** 保存file类型文件**/ public function saveImg_file($img = null , $type = null) { //获取保存图片配置 $imgConfig_savePath = C("img_save.save_path"); $imgConfig_size= C("img_save.size"); $saveFlag = false; if ($img && $imgConfig_savePath[$type]) { $origin_img_save_flag = true; foreach($imgConfig_savePath[$type] as $k => $v) {if(!is_dir($v.date(Ymd))){ mkdir($v.date(Ymd),0777,true);}if ($k == origin){ $this->THINK_UPLOAD->rootPath = $v; $this->THINK_UPLOAD->subName = date(Ymd); $this->THINK_UPLOAD->saveName = array(uniqid,\); $saveRes = $this->THINK_UPLOAD->uploadOne($img); if (!$saveRes) { $origin_img_save_flag = false; } else { $saveFlag = true; $origin_img_path = $v.$saveRes[savepath].$saveRes[savename]; $this->THINK_IMAGE->open($origin_img_path); $fileName = $saveRes[savepath].$saveRes[savename]; }}else{ if ($origin_img_save_flag) { $width = $imgConfig_size[$type][$k][w]; $height = $imgConfig_size[$type][$k][h]; $compress_img_path=$v.$fileName; $saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName); if (!$saveFlag) { $saveFlag = false; $origin_img_save_flag = false; } }} } if($saveFlag) {#$saveFlag = $fileName;$saveFlag = array(origin=>get_current_Host()./.$origin_img_path,compress=>get_current_Host()./.$compress_img_path); } } return $saveFlag; } public function save_file($img = null , $type = null) { //获取保存图片配置 $imgConfig_savePath = C("img_save.save_path"); $saveFlag = false; if ($img && $imgConfig_savePath[$type]) {if (!is_dir($imgConfig_savePath[$type] . date(Ymd))) { mkdir($imgConfig_savePath[$type] . date(Ymd), 0777, true);}$this->THINK_UPLOAD->rootPath = $imgConfig_savePath[$type];$this->THINK_UPLOAD->subName = date(Ymd);$this->THINK_UPLOAD->saveName = array(uniqid, \);$saveRes = $this->THINK_UPLOAD->uploadOne($img);if ($saveRes) { $saveFlag = true; $origin_img_path = $imgConfig_savePath[$type] . $saveRes[savepath] . $saveRes[savename]; //$fileName = $saveRes[savepath] . $saveRes[savename];} } if($saveFlag) {$saveFlag = $origin_img_path;return get_current_Host()./.$saveFlag; }else {return $saveFlag; } } /** 保存file类型文件,多文件**/ public function saveImgs_files($imgs = null , $type = null) { //获取保存图片配置s $imgConfig_savePath = C("img_save.save_path"); $imgConfig_size= C("img_save.size"); $saveFlag = false; $imgResArr = array();//保存图片路径 $origin_img_path = array();//原图路径 if ($imgs && $imgConfig_savePath[$type]) { $origin_img_save_flag = true; foreach($imgConfig_savePath[$type] as $k => $v) {if(!is_dir($v.date(Ymd))){ mkdir($v.date(Ymd),0777,true);}if ($k == origin){ $this->THINK_UPLOAD->rootPath = $v; $this->THINK_UPLOAD->subName = date(Ymd); $this->THINK_UPLOAD->saveName = array(uniqid,\); $saveRes = $this->THINK_UPLOAD->upload($imgs); if ($saveRes) { $saveFlag = true; foreach ($saveRes as $srK => $srV) { $origin_img_path[] = $v.$saveRes[$srK][savepath].$saveRes[$srK][savename]; $fileName = $saveRes[$srK][savepath].$saveRes[$srK][savename]; $imgResArr[] = $fileName; } }}else{ foreach($origin_img_path as $oipK => $oipV) { if ($saveFlag) { $width = $imgConfig_size[$type][$k][w]; $height = $imgConfig_size[$type][$k][h]; $this->THINK_IMAGE->open($oipV); $saveThumb = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$imgResArr[$oipK]); if (!$saveThumb) {$saveFlag = false;break; } } }} } if ($saveFlag) {$saveFlag = $imgResArr; } } return $saveFlag; } /** 保存微信头像 - url**/ public function save_WxImg($picUrl = \,$type = null) { $ch = curl_init($picUrl); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_NOBODY, 0); //对body进行输出。 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $package = curl_exec($ch); $httpInfo = curl_getinfo($ch); curl_close($ch); $media = array_merge(array(mediaBody => $package), $httpInfo); //求出文件格式 preg_match(/\w\/(\w+)/i, $media["content_type"], $extmatches); $fileExt = $extmatches[1]; $saveName = md5(microtime(true)).".{$fileExt}"; //获取保存图片配置 $imgConfig_savePath = C("img_save.save_path"); $imgConfig_size= C("img_save.size"); $saveFlag = false; if ($imgConfig_savePath[$type]) { $origin_img_save_flag = true; foreach($imgConfig_savePath[$type] as $k => $v) {if(!is_dir($v.date(Ymd))){ mkdir($v.date(Ymd),0777,true);}if ($k == origin){ file_put_contents($v./.date(Ymd)./.$saveName,$media[mediaBody]); $origin_img_path = $v./.date(Ymd)./.$saveName; $this->THINK_IMAGE->open($origin_img_path); $fileName = date(Ymd)./.$saveName;}else{ if ($origin_img_save_flag) { $width = $imgConfig_size[$type][$k][w]; $height = $imgConfig_size[$type][$k][h]; $saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName); if (!$saveFlag) { $saveFlag = false; $origin_img_save_flag = false; } else { $saveFlag = $fileName; } }} } } return $saveFlag; } /** 保存file类型文件**/ public function saveImg_Wx($WxImg = array() , $type = null) { //获取保存图片配置 $imgConfig_savePath = C("img_save.save_path"); $imgConfig_size= C("img_save.size"); $saveFlag = false; $imgResArr = array();if ($WxImg && $imgConfig_savePath[$type]) { foreach ($WxImg as $wiK => $wiV) {$wxImg = $this->getWxImg($wiV);$origin_img_save_flag = true;foreach($imgConfig_savePath[$type] as $k => $v){ if(!is_dir($v.date(Ymd))) { mkdir($v.date(Ymd),0777,true); } if ($k == origin) { file_put_contents($v./.date(Ymd)./.$wxImg[saveName],$wxImg[imgMedia][mediaBody]); $origin_img_path = $v./.date(Ymd)./.$wxImg[saveName]; $this->THINK_IMAGE->open($origin_img_path); $fileName = date(Ymd)./.$wxImg[saveName]; $imgResArr[] = $fileName; } else { if ($origin_img_save_flag) { $width = $imgConfig_size[$type][$k][w]; $height = $imgConfig_size[$type][$k][h]; $saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName); if (!$saveFlag) {$saveFlag = false;$origin_img_save_flag = false; } else {$saveFlag = $fileName; } } }} } if($saveFlag) {$saveFlag = $imgResArr; } } return $saveFlag; } /** 保存用户的推广图片 在图片上写字!!!!*/ public function save_userShareImg($bg_img_path = \ , $head_img_path = \ , $qrCode_img_path = \ , $saveFile = \ , $userName = \ , $userDscp = \ , $font_path = \) {//设置头像图片为圆角 $head_img_radius = $this->radius_img($head_img_path,240); //合并到背景图中 $this->mergeImage($bg_img_path,$head_img_radius,$saveFile,array(left => 200, op => 55, width => 480, height => 480)); //设置名称 $this->writeText($saveFile, $saveFile, $userName,255,255,255,1010,32,$font_path, array()); //设置二维码内容 $this->mergeImage($saveFile,$qrCode_img_path,$saveFile,array(left => 255, op => 684, width => 250, height => 245)); return $saveFile; } /** 合并图片*/ private function mergeImage($bg_img, $main_img, $saveFile, $param) { extract($param);// list($bgWidth, $bgHeight) = getimagesize($bg_img); $bgImg = $this->imagecreate($bg_img); if (!is_resource($main_img)) { list($mainWidth, $mainHeight) = getimagesize($main_img); $mainImg = $this->imagecreate($main_img); } else { $mainImg = $main_img; $mainWidth = $width; $mainHeight = $height; } imagecopyresized($bgImg, $mainImg, $left, $top, 0, 0, $width, $height, $mainWidth, $mainHeight);// imagecopyresized($bgImg, $mainImg, $left, $top, 0, 0, $width, $height, $width,$height); ob_start(); // output jpeg (or any other chosen) format & quality imagejpeg($bgImg, NULL, 100); $contents = ob_get_contents(); ob_end_clean(); imagedestroy($bgImg); imagedestroy($mainImg); $fh = fopen($saveFile, "w+"); fwrite($fh, $contents); fclose($fh); } /** 图片写文字* $bg_img 背景图片* $saveFile 保存图片路径* $text 文字* $fontColor 字体颜色* $top 图片距离顶端高度* $fontSize 字体大小* $font 字体路径* $param 传递的参数*/ private function writeText($bg_img, $saveFile, $text, $colorR,$colorG,$colorB , $top , $fontSize , $font , $param = array()) { list($bgWidth, $bgHeight) = getimagesize($bg_img); $im = imagecreatefromjpeg($bg_img); $fontColor = imagecolorallocate($im, $colorR, $colorG, $colorB);//字的RGB颜色 $str = mb_convert_encoding($text, "html-entities", "utf-8");;//解决乱码问题 $fontBox = imagettfbbox($fontSize, 0, $font, $str);//文字水平居中实质 $width = imagesx($im); imagettftext($im, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), $top, $fontColor, $font, $str); ob_start(); // output jpeg (or any other chosen) format & quality imagejpeg($im, NULL, 100); $contents = ob_get_contents(); ob_end_clean(); imagedestroy($im); $fh = fopen($saveFile, "w+"); fwrite($fh, $contents); fclose($fh); } /*** 处理圆角图片* @param string $imgPath 源图片路径* @param integer $radius 圆角半径长度默认为15,处理成圆型* @return [type] [description]*/ public function radius_img($imgPath = \, $radius = 65) { $ext = pathinfo($imgPath); $src_img = null; switch ($ext[extension]) { case jpg:$src_img = imagecreatefromjpeg($imgPath);break; case png:$src_img = imagecreatefrompng($imgPath);break; default:$src_img = imagecreatefromjpeg($imgPath);break; } $wh = getimagesize($imgPath); $w = $wh[0]; $h = $wh[1]; // $radius = $radius == 0 ? (min($w, $h) / 2) : $radius; $img = imagecreatetruecolor($w, $h); //这一句一定要有 imagesavealpha($img, true); //拾取一个完全透明的颜色,最后一个参数127为全透明 $bg = imagecolorallocatealpha($img, 255, 255, 255, 127); imagefill($img, 0, 0, $bg); $r = $radius; //圆 角半径 for ($x = 0; $x < $w; $x++) { for ($y = 0; $y = $radius && $x = $radius && $y <= ($h - $radius))) { //不在四角的范围内,直接画 imagesetpixel($img, $x, $y, $rgbColor);} else { //在四角的范围内选择画 //上左 $y_x = $r; //圆心X坐标 $y_y = $r; //圆心Y坐标 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) { imagesetpixel($img, $x, $y, $rgbColor); } //上右 $y_x = $w - $r; //圆心X坐标 $y_y = $r; //圆心Y坐标 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) { imagesetpixel($img, $x, $y, $rgbColor); } //下左 $y_x = $r; //圆心X坐标 $y_y = $h - $r; //圆心Y坐标 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) { imagesetpixel($img, $x, $y, $rgbColor); } //下右 $y_x = $w - $r; //圆心X坐标 $y_y = $h - $r; //圆心Y坐标 if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) getAccessToken(); // $mediaId = cVqPIhDPPThUtayzS27GK6RN4-dseA6AZnTJxcg7_VaeuAaKcL53X32hmKxhgiSD;// $accessToken = KHaopJY444kJ06LcH9ESj-73pkEfFTgIr3L45RURuUxv1KTjgXyFepJ-cTIF_oUyAKyYb5dK2r9L_wC-WDw2USqGQBMobC6DzPImuhPqxB8jxZ41CuLDtJiaEZk8Vf5kWSSjAAAAWW; $picUrl = "http://file.api./cgi-bin/media/get?access_token=$accessToken&media_id=$mediaId"; $ch = curl_init($picUrl); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_NOBODY, 0); //对body进行输出。 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $package = curl_exec($ch); $httpInfo = curl_getinfo($ch); curl_close($ch); $media = array_merge(array(mediaBody => $package), $httpInfo); //求出文件格式 preg_match(/\w\/(\w+)/i, $media["content_type"], $extmatches); $fileExt = $extmatches[1]; $saveName = md5(microtime(true)).".{$fileExt}"; $img = array(imgMedia=>$media,saveName=>$saveName); return $img; } /** 下载微信服务器的图片* media_id 微信的媒体id* type 保存图片类型* */ public function getWxImg2($mediaId,$file) { if(!class_exists(\JSSDK) && !class_exists(\WxPayConfig)) { vendor(wxsdkapi.jssdk); vendor(wxpayapi.lib.WxPay#Config); } $res = new \JSSDK(C(WEIXINPAY_CONFIG.APPID),C(WEIXINPAY_CONFIG.APPSECRET)); $accessToken = $res->getAccessToken(); $picUrl = "http://file.api./cgi-bin/media/get?access_token=$accessToken&media_id=$mediaId"; return httpcopy($picUrl,$file); }}

调用方法:

优质源码分享,ubuntu电脑连接,服务好的tomcat监控,掌阅爬虫,php源码在线翻译,品牌seo大致需要花多少钱lzw

/*** 生成图片* @param varchar tid 任务id* @httpmethod POST* @response 响应数据* {* "ResultType": "1000",* "Message": "上传成功",* "AppendData": "图片路径",* }*/ public function UploadNavImg() { $tid=Util::getSafeText(I(post.tid)); $imgEven = A(Gszc/Img,Event); //查出公司名称 $res = M(gszc_tasks as t) ->join(app_gszc_userinfo as u on u.tid=t.id) ->where( .id=.$tid) ->field(u.*,t.lastname) ->find(); //主营业务范围 $zyywfws = explode(、,$res[zyywfw]); $zyywfw = array_slice($zyywfws, 0,3); //获取前三个主营业范围 $zyywfw2 = array_slice($zyywfws, 3,6); //获取后三个主营业务范围 $imageName = date("His",time())."_".rand(1111,9999)..jpg; $dir = date(Ymd); $path = uploads/company/.$dir; if (!is_dir($path)){ //判断目录是否存在 不存在就创建 mkdir($path,0777,true); } $img = $imgEven->save_userShareImg($_SERVER[DOCUMENT_ROOT]."/uploads/test.jpg",\,\,$_SERVER[DOCUMENT_ROOT]."/".$path."/". $imageName,$res[lastname],$zyywfw, $zyywfw2, \,$_SERVER[DOCUMENT_ROOT]."/uploads/PingFang Bold.ttf"); if($img){ //生成照片成功 保存到任务表里 $tasks = M(gszc_tasks)->where(id=.$tid)->setField(lastpic,$path."/".$imageName); if($tasks){$lujing = $path."/".$imageName;$this->array_return[errno]=self::__OK__;$this->array_return[errmsg]=生成成功!;$this->array_return[data]= $lujing ;$this->ajaxReturn($this->array_return); } }else{ $this->array_return[errno]=self::__ERROR__; $this->array_return[errmsg]=生成失败!; $this->array_return[data]=[]; $this->ajaxReturn($this->array_return); } }

相关教学:PHP视频教学

澳门源码论坛,vscode 如何设置空格,设置ubuntu缩放,tomcat 内存配置最大,sqlite3存储可以多大,二手房网站爬虫python代码,php5.3环境,关于介绍seo的ppt,网站访客qq统计源码,网页页面模板lzw

如果觉得《thinkphp框架 如何利用GD库在图片上编写文字(代码范例)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。