因为最近在知乎上搜到话题:你所见过的高质量学术海报是怎样的?
,然后看到有人说打印一打A4纸,纸上是poster的缩小版,并且加上个人简介以及已发表文章的二维码。真不失为一个非常棒的推销自己的方法呀。学起来,首先从如何制作二维码开始。
首先,二维码可以通过现成的在线工具或者是APP做。著名的有草料二维码,这个超级简单呀,一点就出来了。
我用它做了一个我的博客的二维码,一分钟不到搞定。
虽然有很多的网站和APP可以制作二维码,但是作为一个码农,我还是要表达一下自己的存在感:写R代码制作二维码。
二维码又称QR Code,QR全称Quick Response。大概介绍一下二维码的原理:矩阵式二维条码是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。我的理解就是将一个字符串编码成一个数字矩阵,然后将矩阵里面的数字对应到颜色,就制成了一个二维码图片。
在R中可以用 qrencoder
包来制作二维码。安装该包时会自动安装这三个依赖的包:sp, raster, png。
# install.packages("qrencoder")
qrencode
: Return a QR encoded string as a matrix
qrencode_df
: Return a QR encoded string as an x, y, z data.frame
qrencode_png
: Return a QR encoded string as a base 64 encoded inline png
qrencode_raster
: Return a QR encoded string as a raster object
qrencode_svg
: Return a QR encoded string as an svg string
#Load library
suppressPackageStartupMessages(library(qrencoder))
suppressPackageStartupMessages(library(RColorBrewer))
suppressPackageStartupMessages(library(png))
#步骤1:准备好logo图片 (博客logo) 和需要编码的url (我的博客主页):
url <- 'http://chenyuan.date/'
color_set <- sample(brewer.pal(8, "Dark2"), 4)
#步骤二:先将url转换成0-1矩阵,再将矩阵中的1随机替换成1,2,3, 4 (表示其他四种颜色)
matrix <- qrencode(url)
matrix <- apply(matrix, 2, function(x) {x[x==1] <- sample(1:4, sum(x==1), replace = T); return(x)})
#步骤三:画没有logo的二维码
png("qrcode.png")
par(mar=c(0,0,0,0))
image(matrix, asp=1, col=c("white", color_set), axes=FALSE, xlab="", ylab="")
dev.off()
#步骤四:读入原始二维码和logo文件,将两个图片merge在一起
qrcode <- readPNG("qrcode.png")
logo <- readPNG("logo.png")
png("chenyuan-blog.png")
par(mar = c(0,0,0,0))
plot(0, type = 'n', xlim = c(0,1), ylim = c(0,1), ylab = '', xlab = '', axes = FALSE)
rasterImage(qrcode, xleft = 0, ybottom = 0, xright = 1, ytop = 1)
rasterImage(logo, xleft = 0.45, ybottom = 0.45, xright = 0.55, ytop = 0.55)
dev.off()
#中间插入的logo不能占太多地方呀,否则就把二维码的信息遮盖得太多,导致扫不出来码。
#因为我设置的颜色是随机的,效果好看不好看就看命了。所以如果想掌控颜色,自己设置特定颜色即可。