从终端读取QR码

4
我正在开发一个C应用程序,需要显示QR码。与其编写GUI代码,我想直接在终端上显示它。然而,标准的QR码读取器期望QR码是方形的,但是在Linux终端中打印出来时,它呈现为矩形形状。 如何解决? 尝试以正方形形式打印QR码可能是保持其与标准QR码读取器兼容的最佳选择。老实说,我甚至不知道QR码读取器是否能够解释通过终端显示的QR码(也许这取决于使用的字符是否可读?)。
······· · ·    ··   · ·······
·     · ·  ·· ··    · ·     ·
· ··· ·        ···    · ··· ·
· ··· · ·· ····   ··  · ··· ·
· ··· · ·      · ··   · ··· ·
·     · ·    ·  ····· ·     ·
······· · · · · · · · ·······
           · ···   ·         
   ·  ·  ·  ·   ··     ··· ··
  ···· ····  ····  ·····    ·
 · ···· · · ··   ·  · ··  ·· 
·   ·  ··     ·   ·  ······· 
 ·  ··· · · ·· · · ·  ··     
 ····      ···· ·· ··· · · · 
· ·· ····   · ····  ··     ··
  ·      · ·  ··· ··  ··   · 
 ·· · ···  ···   ···       · 
    ·· ·  ·· ·  ·  ··· ·   ··
·    ··  ··  ·  · ·  · ·   ··
    ··  ···· ·· · ·     ··   
·   · ·    ·  ·· ·  ····· · ·
        · ···   ··· ·   ·  ··
·······  ··  ·    · · · ···· 
·     ·    ·· ···   ·   · · ·
· ··· ·      ·  · · ······ · 
· ··· · ··      ·· ···· ··  ·
· ··· ·  ···  ·  · ··   · · ·
·     ·   · ·· · · ·  ··   · 
·······  ···     ··   · ·· · 

1
这可能会给你灵感.. qrencode 它可以使用 ANSI 序列或 Unicode 字符在终端上进行绘制。ANSI 图形看起来令人印象深刻,并且在手机上测试也可以正常工作。 - Cong Ma
1
例如,您可以查看UTF8绘图的实现:https://github.com/fukuchi/libqrencode/blob/785c587542b24cc86/qrenc.c#L841 - Cong Ma
1个回答

2
取决于所使用的确切字体和终端是否支持字符,对于每个黑色正方形,您可以尝试使用以下字符:██。
这是两个U+2588全块字符。对于每个白色正方形,只需使用两个普通空格。
编辑:刚刚阅读了Cong Ma的评论和链接的源代码。简要地浏览了一下,它似乎使用半块字符(▀和▄),每次打印两行,以便输出最终只有我上面的方法的四分之一大小的一个变体。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接