【问题标题】:how to store an image inside a qr code content offline如何离线将图像存储在二维码内容中
【发布时间】:2016-05-10 21:21:11
【问题描述】:

我想将图像离线存储在 QR 码中。当用户扫描二维码时,图像将自动显示,无需任何网络连接。有没有办法做到这一点?

【问题讨论】:

    标签: generator


    【解决方案1】:

    这是不可能

    二维码阅读器用于解密文本条目。您唯一的方法是在您的 QR 码中放置一个链接,该链接将重定向到图像:需要连接

    即使您将图像编码为数据 URI,二维码也会太大而无法正确读取。二维码用于封装大约 250 个字符。数据 URI 图像的长度约为 10,000 到 1,000,000 个字符。

    即使它被正确读取(也许如果您使用高 ECC 冗余对其进行编码),读取器的应用程序中没有任何内容可以读取数据 URI 图像。只有浏览器可以,使用 CSS 样式。

    二维码是在连接的环境中创建的,可以轻松分享链接

    您唯一的选择是将图像托管在某处,然后将 URL 编码到您的 QR 码中。这些是图像托管的示例:

    【讨论】:

      【解决方案2】:

      可以将图像编码为二维码。问题是没有“简单的方法”来呈现该图像。要么您需要安装一个可以解释图像的应用程序(例如通过深度链接),要么您必须搭载其他协议(例如 vcard)。

      Apple 很好地允许其操作系统级别的二维码阅读器解析 vcard 语法。由于vcard supports embedded images,您可以在联系人应用程序中将图像显示为个人资料照片。下面的示例代码 sn-p 显示了如何创建该二维码以及生成的(巨大但有效的)二维码。 :-)

      当然有限制:简而言之,您只能对微小的图像进行编码,尽管您可以通过压缩图像和使用例如webp 或 HEIF。

      如何生成带有嵌入 base64 编码图像的二维码(使用qrcodesource of gopher base64):

      import qrcode
      
      qrcode.make("BEGIN:VCARD]n"
      "VERSION:2.1\n"
      "FN: Gopher\n"
      "NOTE:Its possible to encode an image into a QR code!\n"
      "PHOTO;ENCODING=b;TYPE=PNG:iVBORw0KGgoAAAANSUhEUgAAAEsAA"
      "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"
      "gAAAABJRU5ErkJggg==\n"
      "END:VCARD")
      

      【讨论】:

        【解决方案3】:

        我不同意。如果您的手机内部存储器中存储了图像,则它具有可以使用任何浏览器打开的地址(只需在 Android 上使用 /storage/emulated/0/DCIM/Camera/IMG_20181222_160738.jpg 尝试使用 chrome 即可)。问题是要找到一个真正使用这个内部地址的二维码阅读器,就好像它是一个 URL 一样,并直接打开它(他们中的大多数人尝试使用 google 查找信息)。但这是可能的,这是肯定的。

        【讨论】:

          猜你喜欢
          • 2015-10-24
          • 1970-01-01
          • 1970-01-01
          • 2013-04-23
          • 1970-01-01
          • 2016-11-07
          • 1970-01-01
          • 1970-01-01
          • 2011-04-14
          相关资源
          最近更新 更多