今天工作遇到了需要生成文字水印的优惠券功能
生成文字水印没什么问题
就是要把生成好的图片变成如同上传图片一样的格式存在数据库中费了我一点时间
现在上代码
function user_coupon($couponid,$openid,$state){
/*获取优惠券值*/
$coupon=db("coupon")->where("id=$couponid")->find();
//水印公共位置
$wz=array(240,76);//水印位置
/*优惠券图片*/
//图片路径
$src1=ROOT_PATH.$coupon['coupon_img'];
$image1 = \think\Image::open($src1);
//优惠券名称
$img_name1=time().rand(1,1000);
//优惠券到期时间
$mon=$coupon['face_time'];
//时间戳
$time=strtotime("+$mon months",time());
//时间戳转为中文
$time_name=date("Y-m-d",$time);
$image1->text($time_name,'./public/static/admin/fonts/simhei.ttf',17,'#808080',$wz)->save('public/static/couponimg/'.$img_name1.'.png');
/*优惠券图片 end*/
/*已选中优惠券图片*/
$src2=ROOT_PATH.$coupon['selected_img'];
$image2 = \think\Image::open($src2);
//优惠券名称
$img_name2=time().rand(1,1000);
//优惠券到期时间
$image2->text($time_name,'./public/static/admin/fonts/simhei.ttf',17,'#808080',$wz)->save('public/static/couponimg/'.$img_name2.'.png');
/*已选中优惠券图片 end*/
//添加到用户优惠券中
$data1['xcx_openid']=$openid;
$data1['voucher_value']=$coupon['face_value'];
$data1['face_quota']=$coupon['face_quota'];
$data1['coupon_source']=$state;
$data1['state']=0;
$data1['coupon_img']="/public/static/couponimg/$img_name1.png";
$data1['selected_img']="/public/static/couponimg/$img_name2.png";
$data1['time1']=time();
$data1['time2']=$time;
db("user_coupon")->insert($data1);
}
$src1是图片的路径
$img_name1 是生成图片的随机名称
$time_name 格式如2019-07-18 是我要添加的文字水印
simhei.ttf 是文字的格式 这个是需要自己去网上下载 把它放在public下的一个地方即可通过 ./public/......simhei.ttf就可以自动找到,如果不加则会报错。
$wz 是文字水印要移动到的位置 这个可以自己调试
save后面的路径是 图片要移动到的位置图片命名是$img_name1生成的 确保不会重名
把图片的路径储存相对应的数据库中保存的路径如下 $data1['coupon_img']="/public/static/couponimg/$img_name1.png";
这样就可以得到该文件的路径
以上就是今天的总结