V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
free6om
V2EX  ›  科技

见过这样的二维码生成器吗?

  •  4
     
  •   free6om · 2016-02-25 13:53:26 +08:00 · 9566 次点击
    这是一个创建于 3200 天前的主题,其中的信息可能已经有所发展或是发生改变。

    搞了个ASCII Art 二维码生成器,效果图如下:

    Sample

    简单来说就是选择图片中的一块区域和给定 URL ,将 URL 生成二维码,满足二维码的黑白色块构成的图形与所选区域的形状基本相似。

    代码在这里: https://github.com/dieforfree/qart4j
    欢迎试用和反馈问题!

    58 条回复    2017-12-02 11:28:10 +08:00
    jonechenug
        1
    jonechenug  
       2016-02-25 14:05:55 +08:00 via Android
    我是阿宝,为什么要把我打码,好东西
    est
        2
    est  
       2016-02-25 14:13:18 +08:00
    网址后面一大串随机字符???

    我也发一个

    free6om
        3
    free6om  
    OP
       2016-02-25 14:26:39 +08:00
    @jonechenug 不怕,有码也高清
    v1024
        4
    v1024  
       2016-02-25 14:27:40 +08:00
    好棒
    free6om
        5
    free6om  
    OP
       2016-02-25 14:30:12 +08:00
    @est 被你发现了,"随机字符"正是为了让二维码尽量逼近背景图形,所以也不算真正的"随机"。你发的这个主要用了二维码纠错能力
    designer
        6
    designer  
       2016-02-25 14:33:50 +08:00
    很有趣的。。。可惜我运行不了哇。要 java 环境支持吗
    jacy
        7
    jacy  
       2016-02-25 14:42:09 +08:00   ❤️ 3
    jacy
        8
    jacy  
       2016-02-25 14:43:48 +08:00
    对了,上面这个好像不要随机字符
    free6om
        9
    free6om  
    OP
       2016-02-25 14:45:42 +08:00
    @designer 是的,需要 Java 环境。用在宣传海报打二维码比较适合,二维码与背景相似,还可以调整二维码的色彩和透明度,这样使二维码不会像一块膏药那样突兀。
    hqdmy
        10
    hqdmy  
       2016-02-25 14:45:47 +08:00
    coolshell 大神的头像就是这么搞得么
    dong3580
        11
    dong3580  
       2016-02-25 14:48:18 +08:00
    @est
    好可爱,
    ceoimon
        12
    ceoimon  
       2016-02-25 14:48:20 +08:00
    见过。就是 7 楼那个,还能弄 GIF 的。
    free6om
        13
    free6om  
    OP
       2016-02-25 14:50:26 +08:00
    @jacy 这篇论文里当时看到时,觉得逼近程度可以用"震撼"来形容,半色调结合二维码纠错,对二维码内容也不需要做修改,原理跟我发的这个不一样
    free6om
        14
    free6om  
    OP
       2016-02-25 14:52:58 +08:00
    @hqdmy 果然有人提到 coolshell 大神了,我就是看到大神的头像,有感,于是怀上了...于是搞了这个库。
    free6om
        15
    free6om  
    OP
       2016-02-25 15:01:03 +08:00
    @ceoimon 百度也搞过 GIF 二维码,估计就是用了 7 楼那篇论文
    designer
        16
    designer  
       2016-02-25 15:04:05 +08:00
    @free6om 大牛和各位大牛。有没有七楼 那篇论文的 在线生成二维码化图像 站点或者软件啊?,感觉 图像化非常清晰,网址跳转非常的快。
    用 UC 扫你的那个海报的码,扫不出来。
    Strikeactor
        17
    Strikeactor  
       2016-02-25 15:05:07 +08:00
    好棒
    zwpaper
        18
    zwpaper  
       2016-02-25 15:08:47 +08:00
    不错,已 Star ,有空再看看那个论文
    free6om
        19
    free6om  
    OP
       2016-02-25 15:09:59 +08:00   ❤️ 1
    @designer 7 楼论文作者把相应的软件也实现了: http://cgv.cs.nthu.edu.tw/Projects/Recreational_Graphics/Halftone_QRCodes/

    海报里那个二维码我为了能让人快速看到效果,牺牲了些可识别性。
    free6om
        20
    free6om  
    OP
       2016-02-25 15:13:01 +08:00
    @zwpaper 阿里巴巴收购的一个公司在另外一个方向上也走的比较远,也可以看看: http://www.visualead.com/
    garipan
        21
    garipan  
       2016-02-25 15:17:21 +08:00
    见过 还研究过那个 paper 但是没有看懂…… :)
    plqws
        22
    plqws  
       2016-02-25 15:40:43 +08:00
    如果能加上颜色就更好了
    just4test
        23
    just4test  
       2016-02-25 15:46:11 +08:00
    visualead 早实现了。我还买了他们家一个月会员,结果到现在三年了都还是会员……
    Tink
        24
    Tink  
       2016-02-25 15:51:04 +08:00
    我记得我在 coolshell 的陈浩的微博头像上见到过这样的
    qw7692336
        25
    qw7692336  
       2016-02-25 15:52:15 +08:00
    居然可以扫
    free6om
        26
    free6om  
    OP
       2016-02-25 16:04:46 +08:00
    @plqws 颜色有参数可以设置的,不过目前仅支持全部黑色块和全部白色块的 ARGB 值设置,还不能针对单个色块进行设置
    ayouwei
        27
    ayouwei  
       2016-02-25 16:08:20 +08:00
    mark..
    toou123
        28
    toou123  
       2016-02-25 16:28:44 +08:00
    好牛逼
    keepcleargas
        29
    keepcleargas  
       2016-02-25 17:08:52 +08:00
    有意思.
    luoyetx
        30
    luoyetx  
       2016-02-25 18:40:13 +08:00
    mark 下,挺有意思的
    free6om
        31
    free6om  
    OP
       2016-02-25 20:41:13 +08:00
    @garipan 我当时也是看的云里雾里
    wbsdty331
        32
    wbsdty331  
       2016-02-25 21:45:14 +08:00
    有意思
    马克一下
    garipan
        33
    garipan  
       2016-02-25 22:10:17 +08:00 via iPhone
    @free6om 那后来咋弄懂的 求解释 是用了现成的库吗?
    ebony0319
        34
    ebony0319  
       2016-02-25 22:11:27 +08:00 via Android
    这个有意思,收藏了。
    free6om
        35
    free6om  
    OP
       2016-02-25 22:13:21 +08:00
    @Tink 我就是看到 coolshell 的头像,然后搞了这么个东西
    free6om
        36
    free6om  
    OP
       2016-02-25 22:15:50 +08:00
    @garipan 我这个的原理跟 paper 里的不一样, paper 那个有实现: http://cgv.cs.nthu.edu.tw/Projects/Recreational_Graphics/Halftone_QRCodes/
    Jaylee
        37
    Jaylee  
       2016-02-25 22:41:51 +08:00
    好棒,已 star
    free6om
        38
    free6om  
    OP
       2016-02-26 06:49:26 +08:00 via Android
    @Jaylee 😘
    free6om
        39
    free6om  
    OP
       2016-02-26 07:44:27 +08:00 via Android
    @garipan paper 里感觉最关键的是那个基本形状库和匹配算法,其他用类似 opencv 的图形处理库都比较容易实现
    zwpaper
        40
    zwpaper  
       2016-02-26 10:11:42 +08:00
    @free6om 那怎么市面上还是比较少见呢?应该是挺有应用点的一个创意
    NovemberEleven
        41
    NovemberEleven  
       2016-02-26 10:11:53 +08:00
    好棒。
    free6om
        42
    free6om  
    OP
       2016-02-26 11:16:24 +08:00
    @zwpaper 阿里那个更多的是给自己生态内的厂家、伙伴、用户等在用,对全互联网没什么推广力度。也可能是二维码终究是个深度细分的市场,并且大家对常见的那个黑乎乎二维码已普遍接受,认为二维码就是或就应该这样,对其视觉审美没啥要求
    ligyxy
        43
    ligyxy  
       2016-02-26 12:05:40 +08:00 via Android
    哦咯 这个棒
    went
        44
    went  
       2016-02-26 15:52:06 +08:00
    po 主可以对参数做些说明吗
    free6om
        45
    free6om  
    OP
       2016-02-26 16:24:06 +08:00
    @went 可以通过`--help`打印参数说明,里面最主要的参数如下:
    -i 输入图片路径
    -o 输出图片路径
    -w 输出图片宽度
    -h 输出图片高度
    -u 二维码中的 URL
    -v 二维码 version ,可参看二维码规范文档
    -z 生成的二维码图片大小
    --ml, --mr, --mt, --mb 四个参数用来确定二维码在整个图片中的位置信息, ml 是 margin-left 的意思,其他类似
    --cb, --cw 分别用来制定二维码中黑色块和白色块的 ARGB 值
    zqhong
        46
    zqhong  
       2016-02-26 17:59:20 +08:00
    很好玩的东西,赞一个。

    给楼主提一些建议:
    1. 代码库中建议加入生成好的 jar 文件。并不是每个人都有安装 Maven 的。
    2. 不提供参数执行 runnable.jar 这个文件,会抛出一个错误。现在的命令行程序不都是不提供任何参数的时候,打印帮助信息吗?

    错误如下:
    $ java -jar qart4j.jar
    2016-02-26 17:58:29.397 1 [main] ERROR test - encode error
    java.io.FileNotFoundException: input.png (系统找不到指定的文件。)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at org.apache.commons.imaging.common.bytesource.ByteSourceFile.getInputStream(ByteSourceFile.java:40)
    at org.apache.commons.imaging.Imaging.guessFormat(Imaging.java:263)
    at org.apache.commons.imaging.Imaging.getImageParser(Imaging.java:738)
    at org.apache.commons.imaging.Imaging.getBufferedImage(Imaging.java:1402)
    at org.apache.commons.imaging.Imaging.getBufferedImage(Imaging.java:1370)
    at free6om.research.qart4j.ImageUtil.loadImage(ImageUtil.java:40)
    at free6om.research.qart4j.QArt.main(QArt.java:180)
    xcodebuild
        47
    xcodebuild  
       2016-02-26 21:48:36 +08:00
    有意思,才知道还有这样的东西
    free6om
        48
    free6om  
    OP
       2016-02-27 15:39:52 +08:00 via Android
    @zqhong 不错的建议,第 1 点我可以将打包好的 jar 放到 github 的 release 里;第 2 点不错,更友好
    free6om
        49
    free6om  
    OP
       2016-02-27 15:42:05 +08:00 via Android   ❤️ 1
    @codefalling 2 楼, 7 楼, 20 楼提到的也很有意思
    goldengate
        50
    goldengate  
       2016-02-27 20:19:36 +08:00 via Android
    有意思,二维码还可以这么玩
    goldengate
        51
    goldengate  
       2016-02-27 20:39:32 +08:00 via Android
    参数可以汉化下不?有些英语不太明白😁
    wzxjohn
        52
    wzxjohn  
       2016-02-29 16:26:03 +08:00
    @just4test 因为现在好像不能买会员了。亏了啊。。。
    just4test
        53
    just4test  
       2016-02-29 20:43:51 +08:00
    @wzxjohn 还可以。挂美国代理。
    wzxjohn
        54
    wzxjohn  
       2016-03-01 14:46:17 +08:00
    @just4test 还真是!不知道现在是不是不取消哈哈
    wzxjohn
        55
    wzxjohn  
       2016-03-01 16:33:45 +08:00
    @just4test 我看了下是自动循环扣费的。。。你不会被扣了 3 年吧。。。
    just4test
        56
    just4test  
       2016-03-01 18:01:51 +08:00 via Android
    @wzxjohn 并没有。算是占了便宜吗,不过后来就没用过。这玩意要是提供 API 还行,没有 API ,自己又不开公司,真是没啥好玩的。
    而且他们家如果要生成质量好的二维码靠的是短链接。然后短链接网址被墙了。
    也可以生成直接链接,但是效果没那么好而且有数量限制,按照付费等级每月补充。我虽然高级账户还可以用,但就没有补充了。
    wzxjohn
        57
    wzxjohn  
       2016-03-01 23:24:31 +08:00
    @just4test API 确实不给。不过刚好有相关需求,就当买两个生成个个人二维码玩玩好啦~
    cdlcm
        58
    cdlcm  
       2017-12-02 11:28:10 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2727 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:13 · PVG 12:13 · LAX 20:13 · JFK 23:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.