linux 生成二维码怎么内容怎么弄

linux 生成二维码怎么内容怎么弄,第1张

二维码可以用php的phpqrcode,做为二维码工具还是比较强大的,可以在自己服务器搭建二维码生成器

可以这么调用

<?php

include "qrlib.php"

$errorCorrectionLevel = 'L'

if (isset($_REQUEST['level']) &&in_array($_REQUEST['level'], array('L','M','Q','H')))

$errorCorrectionLevel = $_REQUEST['level']

$matrixPointSize = 4

if (isset($_REQUEST['size']))

$matrixPointSize = min(max((int)$_REQUEST['size'], 1), 10)

if (isset($_REQUEST['data'])) {

if (trim($_REQUEST['data']) == '') die()

$url = $_REQUEST['data']

QRcode::png($url, false, $errorCorrectionLevel, $matrixPointSize)

} else {

die()

}

效果和详细可以参考下

http://www.tocus.com.cn/?send=article_show&id=178&class=2

希望对你有帮助

需求很简单,就是在linux的终端中输入一个字符串(可以是以命令行参数形式,也可以是通过交互式输入),然后就会输出对应的二维码。

首先PHP已经有现成的QrCode类库phpqrcode,可以将一个字符串转成PNG格式的图片,但是PNG图片是没法在终端里展示的,于是仔细翻看文档和demo,发现该类库也可以输出0和1组成的矩阵(实际上该方法返回的是一个PHP的二维数组)。

已经有了0和1的矩阵,接下来要做的就是输出黑白色块,为了 *** 作方便,我引入了symfony项目中的console组件。通过console组件可以非常方便的创建一个Cli命令,而且内置了大量输入和输出方法。

根据console的文档,我们可以新建两个OutputFormatStyle:

1$black = new OutputFormatterStyle('black', 'black')

2$output->getFormatter()->setStyle('blackc', $black)

3$white = new OutputFormatterStyle('white', 'white')

4$output->getFormatter()->setStyle('whitec', $white)

定义了文字颜色和背景颜色分别是白色和黑色的两个样式。

这样就可以输出白色和黑色的色块了:

1$output->writeln('<whitec> </whitec><blackc> </blackc><whitec> </whitec>')

上面的代码就会输出两个白色块中间隔着一个黑色块。

黑白色块输出搞定之后,只需要根据二维码的0-1矩阵输出对应色块就行。

所以核心代码如下:

01protected function execute(InputInterface $input, OutputInterface $output)

02{

03$lrPadding = 1

04$udPadding = 1

05$text = 'http://leo108.com'

06$map = array(

070 =>'<whitec> </whitec>',

081 =>'<blackc> </blackc>',

09)

10$this->initStyle($output)

11$text = QRcode::text($text)

12$length = strlen($text[0])

13

14$paddingLine = str_repeat($map[0], $length + $lrPadding * 2) . "\n"

15$after = $before = str_repeat($paddingLine, $udPadding)

16$output->write($before)

17foreach ($text as $line) {

18$output->write(str_repeat($map[0], $lrPadding))

19for ($i = 0$i <$length$i++) {

20$type = substr($line, $i, 1)

21$output->write($map[$type])

22}

23$output->writeln(str_repeat($map[0], $lrPadding))

24}

25$output->write($after)

26}

其中$lrPadding和$udPadding分别用来配置左右和上下白边的长度。

最终代码已托管github


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9019405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存