二维码支持

Signed-off-by: ousui <x@ousui.org>