PHP图片处理之二维码加文字

来源:转载

需求

客户商品管理系统,每个商品需要生成一个二维码以便手机直接扫描查看商品信息,而对应的,二维码下方必须有一串唯一码,它们存在于一张图片上,以方便用户另存打印贴纸(不相干细节省略)。


分析

将链接生成二维码不难,直接qrcode即可解决。


剩下的对应唯一码,例如:WY998823, 按特定算法生成码后,需要与二维码图片重新合成为一张图片,PHP中的图片处理,不用说,首当其冲GD库。


过程

由于代码涉及较多,就不直接贴出来了。此处简述用到的方法及流程,供大家参考。


打开图片


将 Qrcode 生成的二维码图片按照 路径 打开,获取相关信息。宽度类型等信息可以用 getimagesize() 获取打开图片:$image = imagecreatefrompng($file);如果事先不知道原图片格式的话,可以采用下面方法:$info = getimagesize($file); // 获取图片信息
$type = image_type_to_extension($info[2],false); // 获取图片扩展名
$fun= "imagecreatefrom{$type}"; // 构建处理图片方法名-关键是这里
$image = $fun($file); // 调用方法处理

处理图片


将字体文件准备好,设置好字体的颜色,然后创建文字:$font = ROOT_PATH.'public/static/fonts/msyh.ttf'; // 字体文件
$color = imagecolorallocate($image,0,0,0); // 文字颜色
imagettftext($image, 20, 0, 80, 292, $color, $font, $code); // 创建文字这里我直接写在了二维码图片的下边框空白处

输出图片


到这里对于原图片的处理基本就结束了。使用 header() 和 imagepng() 方法输出最终图片:header("Content-Type:image/png");
imagepng($image);如果图片格式不确定,参照上面第一步中给出的例子处理,这里我没有保存到本地。

销毁图片


销毁生成的图片资源和Qrcode生成的图片文件。header('Content-Type:image/png');
imagepng($image);
imagedestroy($image);if (is_file($file)) unlink($file);
效果

生成后效果如图(信息考虑,二维码图像已打码)



总结

图像能否处理和处理得好,就看如何使用GD库了。

分享给朋友:
您可能感兴趣的文章:
随机阅读: