php
复制代码
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;
}