序文
最近ナゲッツクリエイティブデベロップメントコンペティションを見て、その場でテーマのQRコードを思いついた!
二次元コードは、私たちの生活、支払い、スキャンコードのログイン、情報登録で最も一般的に使用されていると言えます。特に過去3年間の流行では、健康の宝物をスキャンする場所がなく、ほとんど嘔吐しました。それなら、私たちの創造性を示して、いくつかの派手なQRコードを作成してみませんか?それはまた、目の世話をすることと考えられています(美的疲労を避けるため)。
示す
さらに面倒なことなく、直接レンダリング
達成
ははは、上の表示画像を見た後、QRコードをすばやく表示しますか?急いで操作してください。実装は非常に簡単です。
環境要件:
python3
依存関係パッケージ:
pip install amzqr
ideの使用
簡単にプレイするには、以下で説明したパラメーターを変更するだけです。すべてのパラメーターの機能を確認するには、 github.com / x-hw/amazin…を参照してください。
import os
from amzqr import amzqr
if __name__ == '__main__':
words = "https://juejin.cn/pins"
version, level, qr_name = amzqr.run(
words=words, # 二维码的内容
version=1,
level='H',
picture="./zombie.png", # 需要镶入二维码的图片
colorized=False, # 是否上色 False(黑白) True(彩色)
contrast=1.0,
brightness=1.0,
save_name="zombie_qr.png", # 图片保存文件名
save_dir=os.getcwd() # 图片保存路径
)
コマンドラインの使用法
# summary
amzqr Words
[-v {1,2,3,...,40}]
[-l {L,M,Q,H}]
[-n output-filename]
[-d output-directory]
[-p picture_file]
[-c]
[-con contrast]
[-bri brightness]
注意を払う
このパッケージは中国語をサポートしていないため、中国語のコンテンツを含むQRコードを生成する場合は、少し変更を加える必要があります
- 次の関数を追加
words
し、パラメーターとして向きを変えます
def utf16to8(input_txt: str) -> str:
out = []
for idx in range(len(input_txt)):
ch = ord(input_txt[idx])
if 0x0001 <= ch <= 0x007f:
out.append(input_txt[idx])
elif ch > 0x07ff:
out.append(chr(0xE0 | (ch >> 12 & 0x0F)))
out.append(chr(0x80 | (ch >> 6 & 0x3F)))
out.append(chr(0x80 | (ch >> 0 & 0x3F)))
else:
out.append(chr(0xC0 | (ch >> 6) & 0x1f))
out.append(chr(0x80 | (ch >> 0) & 0x3f))
return ''.join(out)
words = utf16to8("每当我看见花瓣脱离花蕊慢慢枯萎")
- ideを使用
run
してメソッドのソースコードを入力し、サポートされている文字を判断するメソッドをコメントアウトします
- 終わり!
原理的思考
実装する場合は、QRコード生成の原理を理解し、アルゴリズムを使用してコンテンツでカバーされていない領域を見つけ、画像のピクセルを置き換える必要があります。
興味がある場合は、この実装をご覧ください。research.swtch.com /qr/draw/; QRコード画像内のすべての制御可能なピクセルを表示できるだけでなく、ランダム/ジッター/占有されているピクセル領域のみを表示できます。データによると、とても素晴らしいです!
やっと
お友達の素晴らしいパフォーマンスを楽しみにして、コメント欄にあなたの派手なQRコードを残していただければ幸いです!
詳しくは「クリエイティブデベロップメントコンテスト」に参加しています。こちらをご覧ください:ナゲッツクリエイティブデベロップメントコンテストはこちら!