barcode--php生成条形码

<?php
namespace app\common\logic\utils;

/**
 * 生成条形码
 * 引用插件类库:composer require picqer/php-barcode-generator
 * github:https://github.com/picqer/php-barcode-generator
 * Class Barcode
 * @package app\common\logic\utils
 */
class Barcode{

    /**
     * 当前方法只生成png格式的条形码图片
     * @param string $code
     * @return array
     * @throws \Picqer\Barcode\Exceptions\BarcodeException
     */
    static public function GetBarcodePng($code = ''){

        $result = ['status' => false, 'msg'    => '','url'    => ''];

        if(empty($code)){
            $result['msg'] = '条形码数据不能为空';
            return $result;
        }

        //保存位置:相对路径
        $relative_path = '/upload/barcode/';
        //保存位置:绝对路径
        $absolute_path = ROOT_PATH.'public'.$relative_path;
        if(!is_dir($absolute_path)){
            $res = @mkdir($absolute_path,0755,true);
            if(!$res){
                $result['msg'] = '创建目录失败:'.$code;
                return $result;
            }
        }


        //条形码文件
        $relative_url = $relative_path.$code.'.png';// /upload/barcode/123.png
        $absolute_url = $absolute_path.$code.'.png';// D:/shop/public/upload/barcode/123.png
        if(file_exists($absolute_url)){
            $result['status'] = true;
            $result['msg']    = '之前已经生成过:'.$code;
            $result['url']    = $relative_url;
            return $result;
        }

        //生成图片数据
        $generator = new \Picqer\Barcode\BarcodeGeneratorPNG();//还有其他文件可以生成其他格式的图片
        $data = $generator->getBarcode(
            $code,                     //条形码数据
            $generator::TYPE_CODE_128, //条形码的类型,使用在类中定义的常量,具体参数可参考github
            3,              //条形码的宽度
            50,             //条形码高度
            [0, 0, 0]                  //条形码的颜色
        );

        //保存进png文件
        if(!file_put_contents($absolute_path.$code.'.png', $data)){
            $result['msg'] = '保存文件失败:'.$code;
            return $result;
        }

        $result['status'] = true;
        $result['url']    = $relative_url;
        return $result;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值