用R制作渐变背景图片

library(jpeg)
## 先用barplot函数产生一张JPG图片,默认背景为白色
img <- "result.jpg"
jpeg(img, width = 300, height = 300)
barplot(sample(1:100, 10))
dev.off()
## 读取图片
x <- readJPEG(img)
dimx <- dim(x)
n <- dimx[1] * dimx[2]
r <- x[1:n]
g <- x[(n + 1):(2 * n)]
b <- x[(2 * n + 1):(3 * n)]
## 原背景色,这里取白色
bg <- as.vector(col2rgb("white")/255)
tv <- 0.1
sel <- abs(r - bg[1]) < tv & abs(g - bg[2]) < tv & abs(b - bg[3]) < tv
## 替换背景
bg <- matrix(cm.colors(n), ncol = dimx[1])
bgx <- t(sapply(bg, col2rgb, USE.NAMES = F))/255
r[sel] <- bgx[sel, 1]
g[sel] <- bgx[sel, 2]
b[sel] <- bgx[sel, 3]
x <- array(c(r, g, b), dim = dimx)
writeJPEG(x, "result1.jpg")
## 旋转背景颜色矩阵,改变颜色方向
bg <- t(bg)
bgx <- t(sapply(bg, col2rgb, USE.NAMES = F))/255
r[sel] <- bgx[sel, 1]
g[sel] <- bgx[sel, 2]
b[sel] <- bgx[sel, 3]
x <- array(c(r, g, b), dim = dimx)
writeJPEG(x, "result2.jpg")
## 对角线渐变
ndx1 <- expand.grid(1:dimx[1], 1:dimx[2])
ndx1 <- ndx1[, 1] + ndx1[, 2]
ndx2 <- sort(unique(ndx1))
ndx <- ndx1
for (i in 1:length(ndx2)) ndx[ndx1 == ndx2[i]] <- i
bg <- cm.colors(length(ndx2))
bg <- bg[ndx]
bgx <- t(sapply(bg, col2rgb, USE.NAMES = F))/255
r[sel] <- bgx[sel, 1]
g[sel] <- bgx[sel, 2]
b[sel] <- bgx[sel, 3]
x <- array(c(r, g, b), dim = dimx)
writeJPEG(x, "result3.jpg")


文章来源:测序帮


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值