作品概览
我们先来看几个二维码作品:
怎么样?这些二维码就是艺术二维码,它实现了图片和二维码的完美结合,比普通的二维码更加具有艺术感。而且关键是,每一个二维码都能扫描!
怎样制作?
想制作这样的二维码吗?怎么来制作这样的艺术二维码呢? 其实这个从技术来讲是相对复杂的。在现在这个 AI 时代,目前艺术二维码的解决方案是基于 Stable Diffusion 来做的,通过输入 prompt 我们可以生成对应的图片,同时结合一些二维码内容的融合最终实现这样的效果。 所以这里面其实最主要的挑战在于:如何既把二维码做得好看而且富有艺术,而且二维码还能被正确扫描。说实话这个技术其实还是蛮难的,需要大量的参数调整才能做到稍微好点的效果。 应该 99% 的人在第一步就放弃了。 假设通过不断的调整,我们真的做出来了这样的效果,真正运行起来也是一个不小的开销,如果要速度比较快的话,可能得性能比较好的 GPU,可能一不小心就上万块钱了。 有朋友可能会说:我不想费那么多精力,我也不想花那么多钱,我就想做个艺术二维码,或者我想把这个能力集成到我的产品里面,要是有这样现成的 API 就好了。 有吗?还真有。 本平台提供了艺术二维码相关生成 API,我们可以调用 API 输入各种参数,比如图片内容、二维码链接、样式风格等等各种参数,就可以非常方便地生成想要的艺术二维码了,而且首次申请免费赠送 20 张绘制次数。申请 API
要使用艺术二维码 API,首先可以到艺术二维码 API 页面点击「获取」按钮:
如果你尚未登录,会自动跳转到登录页面,扫码关注公众号即可自动登录,无需额外注册步骤。
登录完了之后会跳回原页面,此时会提示「您尚未申请该服务,需要申请」。申请时会校验实名认证情况,请按照网站提示完成实名认证。实名认证会校验姓名、手机号、身份证号,认证完了之后可以返回页面,刷新一下页面确保信息更新,然后重新申请即可通过申请。
基本使用
要使用艺术二维码的最基本的功能,需要填入如下几个必须参数:type:二维码的类型,如纯文本、链接等。content:二维码的内容,比如如果是链接的话,我们可以填入对应的链接。prompt:二维码对应的风格绘制指令,强烈建议用英文。比如说pizza则会绘制一个像披萨的二维码。callback_url:可选,异步回调地址,提供后会立刻返回任务 ID。content_image_url:可选,包含真实二维码内容的图片链接。aspect_ratio:可选,画布宽高比,默认 1:1。ecl:纠错等级,默认 H。qrw:二维码权重,1.5-3,越大越接近真实二维码。seed:固定随机种子,生成可复现的二维码。steps:绘制迭代步数,10-20,默认 16。preset:预设背景风格。pattern:主体样式,默认 custom。position:二维码位置,默认 center。marker_shape:定位点形状,默认 square。sub_marker:辅助定位点形状,默认 square。pixel_style:像素风格,例如 square、rounded、dot。padding_level/padding_noise:留白和噪点强度。rotate:旋转角度,默认 0。rawurl:是否保留原始链接,默认 false,开启后不做短链。
然后点击测试:
过一会就发现艺术二维码就生成了,结果类似如下:
这样我们就生成了一个二维码,主体是一个船只,悬挂着几个旗帜,而这些旗帜恰恰构成了二维码的定位点。
用手机扫描一下,就可以跳转到知数云的官网了。
同时上述内容调用方案我们可以非常方便地转成 API 调用。
prompt 指南
通过上述操作可以看到,艺术二维码关键在于 prompt 的编写,那 prompt 的编写都有什么讲究呢? 其实这个都是通用的 Stable Diffusion 的 prompt 指令,艺术二维码就是基于 Stable Diffusion 技术加上一些特殊调优生成的,所以它的输入 prompt 和 Stable Diffusion 是完全一样的。 如果你还不知道什么是 Stable Diffusion,可以到它的官网了解下:https://stablediffusionweb.com/,还有prompt 教程和指南:https://stable-diffusion-art.com/prompt-guide/,另外 Stable Diffusion 还制作了 prompt 生成器,可以帮助我们生成 prompt:https://stablediffusionweb.com/prompt-generator,除此之外还有一些 prompt 样例集合网站:https://publicprompts.art/ 如上内容仅作参考,如果更多,可以自行搜索 Stable Diffusion 相关的资料进行学习。高级参数
本 API 还提供了更多高级参数方便进行更多功能定制,说明如下:- preset:预设背景风格。二维码背景的风格,如超现实风格、霓虹效果、手绘风格等。
- steps:绘制迭代次数。当次数越大,绘制的二维码艺术风格越强,范围为 10-20,默认是 16。
- qrw:二维码的权重。当权重越大,图片越接近真实二维码,但是艺术化的风格会减弱,取值范围是 1.5-3,默认是 1.5。
- seed:随机种子。用于生成随机二维码,当种子相同时,生成的二维码风格是一样的,范围为 1-9007199254740991。
- rawurl:是否保持原始链接。默认情况下会将输入链接缩短为短链接,可以提高扫码率,该值默认为 false。
- padding_level:二维码内边距。二维码内边距的大小,
- aspect_ratio:二维码宽高比。
- position:二维码位置。
- pixel_style:二维码像素风格。
- marker_shape:二维码定位框形状。
- sub_marker:二维码子标记样式。
- rotate:二维码旋转角度。
- ecl:二维码纠错等级。
- padding_noise:二维码内边距噪点。
- pattern:预设二维码组合。预设二维码风格组合,如定位框的样式(方形、圆形等)、点的样式(方形、圆形等)。
预设 preset
艺术二维码 API 设置了很多预设模板,这个参数叫做 preset,取值如下:- sunset(日落): 融合了夕阳余晖的温暖色调和柔和光线效果。
- floral(花卉): 带有花朵和植物元素的艺术风格,强调自然之美。
- snowflakes(雪花): 冰雪世界,具有冰晶和雪花的冷酷氛围。
- feathers(羽毛): 呈现出羽毛和鸟类特征,营造轻盈和柔软的感觉。
- raindrops(雨滴): 以雨滴和水珠为灵感,创造出清新湿润的效果。
- ultra-realism(超现实): 极度逼真的细节和质感,营造出超越现实的效果。
- epic-realms(史诗领域): 壮丽的场景和史诗感,带来宏大的视觉体验。
- intricate-studio(错综复杂): 富有细节和复杂性,需要仔细观察才能完全理解的风格。
- symmetric-masterpiece(对称杰作): 通过对称元素创造出精美的平衡和谐。
- luminous-highway(发光高速公路): 强调夜间的发光效果,如车灯和霓虹灯。
- celestial-journey(星际之旅): 探索宇宙和星际的奇幻旅程。
- neon-mech(霓虹机械): 结合了霓虹灯和机械元素,营造出未来感。
- ethereal-low-poly(飘渺低多边形): 低多边形风格,创造出虚幻和抽象的效果。
- golden-vista(金色景观): 以金色调为主,呈现出壮观的视觉景象。
- cinematic-expanse(电影式广袤): 带有电影感的广阔场景,引人入胜。
- cinematic-warm(电影式温暖): 具有电影质感的温暖色调和光线效果。
- desolate-wilderness(荒凉荒野): 描绘荒芜和荒野,营造出孤寂感。
- vibrant-palette(鲜明调色板): 色彩丰富多样,强烈的色彩对比。
- enigmatic-journey(神秘之旅): 探索充满谜团和神秘感的旅程。
- timeless-cinematic(永恒电影): 具有电影质感且不受时间限制的风格。
- regal-galaxy(皇家星系): 带有皇家气息的星系和宇宙元素。
- illustrious-canvas(杰出画布): 创作出卓越而引人注目的画布效果。
- expressive-mural(富有表现力的壁画): 充满表现力和情感的大型壁画风格。
- serene-haze(宁静薄雾): 带有宁静和薄雾效果,营造出宁静的氛围。
如果我们换个风格,比如把 preset 参数换成 raindrops(雨滴效果),效果如下:
关于其他的一些设定大家可以自行试验。
二维码宽高比 aspect_ratio
通过 aspect_ratio 参数我们可以设置二维码的宽高比,比如正方形 1:1,长方形 16:9 等等,该参数:- 768x768:宽高比为 1:1,表示画布的宽度和高度相等。对应的像素尺寸为 768x768,生成的二维码画布为正方形。
- 1008x576:宽高比为 16:9,表示画布的宽度是高度的 16/9 倍。对应的像素尺寸为 1008x576,生成的二维码画布宽度较大,适合宽屏显示。
- 576x1008:宽高比为 9:16,表示画布的宽度是高度的 9/16 倍。对应的像素尺寸为 576x1008,生成的二维码画布高度较大,适合竖屏显示。
- 864x672:宽高比为 4:3,表示画布的宽度是高度的 4/3 倍。对应的像素尺寸为 864x672,生成的二维码画布略带正方形感,适合一般显示。
- 672x864:宽高比为 3:4,表示画布的宽度是高度的 3/4 倍。对应的像素尺寸为 672x864,生成的二维码画布略带纵向矩形感,适合一般显示。
二维码位置 position
我们还可以通过 position 参数控制二维码的位置,比如说一张图片里面有一个女生穿裙子,而我们想要把二维码放在裙子的位置并与之融合起来,我们就可以尝试改下二维码的位置,调用样例如下:
二维码像素风格 pixel_style
我们还可以自定义二维码的像素风格,通过传入 pixel_style 即可,参数可选值如下:- square(方形):使用方形的像素单元,每个像素单元都是正方形的形状。
- rounded(圆角):像素单元具有圆角,使得生成的二维码看起来更加柔和和现代化。
- dot(点状):使用小圆点作为像素单元,生成的二维码呈现出点阵的效果,类似于印刷效果。
- squircle(圆角方形):类似于圆角矩形,但更加接近圆形的形状,为生成的二维码赋予一种独特的风格。
- row(行排列):将像素单元按行排列,呈现出水平方向的图案。
- column(列排列):将像素单元按列排列,呈现出垂直方向的图案。
二维码框风格 marker_shape
通过 marker_shape 可以自定义定位框的风格,参数可选值如下:- square(方形):标记形状为正方形,用于突出特定位置或元素。
- circle(圆形):标记形状为圆形,可用于标记关键区域或元素。
- plus(加号):标记形状为加号,类似十字型,用于突出注意或特定信息。
- box(方框):标记形状为方框,类似于描边的矩形,可用于围绕区域或元素。
- octagon(八边形):标记形状为八边形,带有独特的角落,用于视觉吸引。
- random(随机):标记形状随机分布,为二维码添加艺术感和视觉趣味。
- tiny-plus(微小加号):微小的加号标记,可用于标记细微的元素或细节。
二维码子标记风格 sub_marker
通过 sub_marker 可以用于子标记(较小的标记)的形状,参数可选值如下:- square(方形):子标记的形状为正方形,可以用于突出特定位置的细节。
- circle(圆形):子标记的形状为圆形,可用于强调关键细节或元素。
- box(方框):子标记的形状为方框,类似于描边的矩形,适用于标记细小区域。
- random(随机):子标记的形状随机分布,为二维码添加艺术感和视觉趣味。
- plus(加号):子标记的形状为加号,类似十字型,可以用于标记细微的信息或元素。
二维码旋转角度 rotate
通过 rotate 可以控制二维码的旋转角度,参数可选值如下:- 0:不进行旋转,生成的二维码保持原始方向,没有旋转效果。
- 90:将生成的二维码顺时针旋转90度,使其以纵向方向显示。
- 180:将生成的二维码旋转180度,使其倒置,即上下颠倒的显示方式。
- 270:将生成的二维码顺时针旋转270度,使其以逆纵向方向显示。
二维码预设 pattern
通过 pattern 可以方便地启用一些二维码样式风格,比如方形的定位框、圆形的像素点等等,这里预定义了一些 pattern:| pattern | 含义 | |
|---|---|---|
| s1 | pixel_style: square marker_shape: square | ![]() |
| s2 | pixel_style: square marker_shape: square rotate: 180 | ![]() |
| s3 | pixel_style: square marker_shape: square rotate: 180custom_padding_noise: 0.25 | ![]() |
| rd1 | pixel_style: rounded marker_shape: random | ![]() |
| rd2 | pixel_style: rounded marker_shape: random rotate: 180 | ![]() |
| rd3 | pixel_style: rounded marker_shape: random rotate: 180custom_padding_noise: 0.25 | ![]() |
| d1 | pixel_style: dot marker_shape: circle | ![]() |
| d2 | pixel_style: dot marker_shape: circle rotate: 180 | ![]() |
| d3 | pixel_style: dot marker_shape: circle rotate: 180custom_padding_noise: 0.25 | ![]() |
| r1 | pixel_style: row marker_shape: plus | ![]() |
| r2 | pixel_style: row marker_shape: plus rotate: 180 | ![]() |
| r3 | pixel_style: row marker_shape: plus rotate: 180custom_padding_noise: 0.25 | ![]() |
| c1 | pixel_style: column marker_shape: box | ![]() |
| c2 | pixel_style: column marker_shape: box rotate: 180 | ![]() |
| c3 | pixel_style: column marker_shape: box rotate: 180custom_padding_noise: 0.25 | ![]() |
| sq1 | pixel_style: squircle marker_shape: random | ![]() |
| sq2 | pixel_style: squircle marker_shape: random rotate: 180 | ![]() |
| sq3 | pixel_style: squircle marker_shape: random rotate: 180custom_padding_noise: 0.25 | ![]() |



















