本文主要是介绍【php】GD库生成属性标签图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 标签图生成方法
public static function createLabelImage($labelList,$fileName=""){$initImageFun = function($width,$height){$image = imagecreatetruecolor($width, $height);$backgroundColor = imagecolorallocate($image, 255, 255, 255);imagefilledrectangle($image, 0, 0, $width, $height, $backgroundColor);return $image;};//是否包含中文字符$containsChineseFun = function ($str) {if (preg_match('/[\x{4e00}-\x{9fa5}]/u', $str)) {return true;} else {return false;}};//属性描述填充 超出长度自动换行$decFillImageFun = function($image,$textDesc2,&$yHeight,$textColor,$maxlen=15,$xDecStart=185,$fontSize=25){$fontDec = "./static/admin/font/msyh.ttc";$length2 = mb_strlen($textDesc2, 'UTF-8');$lenNum = ceil($length2/$maxlen);for($i=0;$i<$lenNum;$i++){$yHeightLen = $yHeight+50*$i;imagettftext($image, $fontSize, 0, $xDecStart, $yHeightLen, $textColor, $fontDec, mb_substr($textDesc2,$i*$maxlen,$maxlen));if($i == $lenNum-1){$yHeight = $yHeightLen;}}};//计算画布总高度$calculateHeightFun = function($labelList,$yHeightStart,$lengHeight){$totalHeight = $yHeightStart;foreach ($labelList as $row){$length2 = mb_strlen($row['desc'], 'UTF-8');$maxlen = 15;$lenNum = ceil($length2/$maxlen);$totalHeight += ($lenNum-1)*50 + $lengHeight;}return $totalHeight;};$fontSize = 25;$xTitleStart = 10;$lenHeight = 80;$yHeightStart = 50;$width = 700;$totalHeight = $calculateHeightFun($labelList,$yHeightStart,$lenHeight);$image = $initImageFun($width,$totalHeight);//创建画布handle$textColor = imagecolorallocate($image, 0, 0, 0);//字体文件 微软雅黑加粗$fontTitle = "./static/admin/font/msyhbd.ttc";$yHeight = $yHeightStart;foreach ($labelList as $row){$textTitle = $row['title'].":";imagettftext($image, $fontSize, 0, $xTitleStart, $yHeight, $textColor, $fontTitle, $textTitle);if($containsChineseFun($row['desc'])){$decFillImageFun($image,$row['desc'],$yHeight,$textColor);}else{$decFillImageFun($image,$row['desc'],$yHeight,$textColor,30);}$yHeight = $yHeight+$lenHeight;}//标签保存目录$imagePath = './static/storage/goods_label/';if (!file_exists($imagePath)) {mkdir($imagePath, 0777, true);}if(empty($fileName)){$fileName = time().'_'.rand(1000,9999);}$imageFullName = $imagePath.$fileName.'.jpg';imagepng($image, $imageFullName);imagedestroy($image);unset($yHeight);return $imageFullName;}
- 调用示例
$goodsLabel = [];$goodsLabel[] = ["title" => "IMEI/SN","desc" => $info['is_rand_ship']?"随机发货":$info['barcode']];$goodsLabel[] = ["title" => "质检报告","desc" => $checkList["verdict"]];$goodsLabel[] = ["title" => "包装清单","desc" => $checkList["packlist"]];$fileName = $info['barcode'] ? $info['barcode'] : $info['goods_id'];\app\Common::createLabelImage($goodsLabel,$fileName);
- 标签图片
这篇关于【php】GD库生成属性标签图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!