AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1420001
Accepted
MCK
MCK
Asked: 2019-04-02 06:32:14 +0800 CST2019-04-02 06:32:14 +0800 CST 2019-04-02 06:32:14 +0800 CST

是否可以使用文本创建二维码?

  • 772

我见过的二维码大多是图片文件。但是您可以使用纯文本创建 QR 码吗?

例如 ASCII 和 UTF-8 以黑框作为字符。我可以将它们与空格一起使用来创建二维码吗?

utf-8 qr-code ascii
  • 2 2 个回答
  • 20608 Views

2 个回答

  • Voted
  1. Best Answer
    Attie
    2019-04-02T06:54:48+08:002019-04-02T06:54:48+08:00

    是的!有一个名为的实用程序qrencode可以为您呈现这些。

    QR 码唯一真正重要的因素是二维阵列具有“较暗”和“较亮”的像素/段。它也可以着色,尽管对比度可能开始成为一个问题。

    ASCII码

    您读取此二维码的能力可能取决于摄像头的分辨率、距离和您使用的软件。

    qrencode -t ASCIIi 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'
    

    注意:我使用-t ASCIIi(Inverted ASCII) 因为我的终端是黑底白字。

    ASCII 二维码

    美标

    此模式的工作原理是将背景颜色设置为黑色或白色,并打印一些空格字符。

    qrencode -t ANSI 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'
    

    ANSI 二维码

    写入终端的一些原始字符如下所示,这些是ANSI escape codes。“转义”字符的值为 ,0x1b通常可以写为\e。

    • \e[40m将背景颜色设置为黑色
    • \e[47m将背景颜色设置为白色
    • 0x20是一个ASCII空间

    ANSI QR 代码原始

    UTF-8编码

    还有一种 UTF-8 模式 ( -t UTF8)。此模式使用“半块”字符来增加密度,并将行数减少一半。

    • ▀ - U+2580 / 上半块
    • ▄ - U+2584 / 下半块
    • █ - U+2588 / 整块

    来自@grawity 的截图(感谢)

    qrencode -t UTF8 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'
    qrencode -t ANSIUTF8 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'
    

    UTF-8二维码

    • 184
  2. Michael Altfield
    2021-03-24T13:15:21+08:002021-03-24T13:15:21+08:00

    Attie 的回答qrencode很好,但出于某种原因,它总是输出一个我的 Barcode Scanner 应用程序无法读取的反色二维码。

    反转 UTF-8 输出并非易事,所以我想我会把它留给其他人使用;)

    qrencode=`qrencode -t UTF8  "https://superuser.com/q/1420001/551559"`
    echo "${qrencode}"
    
    # replace black
    qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x88'`/A/g)
    echo "${qrencode}"
    
    # replace white
    qrencode=$(echo "${qrencode}" | sed s/\ /B/g)
    echo "${qrencode}"
    
    # swap black for white
    qrencode=$(echo "${qrencode}" | sed s/A/\ /g)
    echo "${qrencode}"
    
    # swap white for black
    qrencode=$(echo "${qrencode}" | sed s/B/`echo -e '\xe2\x96\x88'`/g)
    echo "${qrencode}"
    
    # replace "Upper Half Block"
    qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x80'`/A/g)
    echo "${qrencode}"
    
    # replace "Lower Half Block"
    qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x84'`/B/g)
    echo "${qrencode}"
    
    # swap upper for lower
    qrencode=$(echo "${qrencode}" | sed s/A/`echo -e '\xe2\x96\x84'`/g)
    echo "${qrencode}"
    
    # swap lower for upper
    qrencode=$(echo "${qrencode}" | sed s/B/`echo -e '\xe2\x96\x80'`/g)
    echo "${qrencode}"
    

    我使用它以便我可以使用二维码对 utf-8 纯文本消息进行加密签名,并以 html 格式将其显示在我的网站上。

    为了在不破坏 qr 代码行间距的可读性的情况下实现这一点,我将 qr 代码放在<pre>具有 css 样式的块中,如下所示:

    <pre style="line-height:1em; letter-spacing: -1px; font-size: x-large;">
    ...
    </pre>
    

    有关实时示例,请参见

    • https://email.michaelaltfield.net
    • 1

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve