用R语言对JPG/JPEG图片进行背景透明处理

大数据
我们在准备会议或工作报告时经常要把单位或组织的徽标插入到幻灯片中,但从照片或网上截屏获得的徽标图片的背景色通常和我们幻灯片的背景不搭配,能把徽标本身的背景色透明掉就好了。如果你会用R,过程就非常简单,只要几行代码。

JPG/JPEG图像背景是不能透明的,但PNG图像可以。代码如下,应用前提是背景和徽标色能较好地区分(稍修改也可以做背景色替换):

  1. library(jpeg) 
  2. library(png) 
  3. FILTER <- matrix(c("JPG file", "*.jpg", "JPEG file", "*.jpeg"),  ncol = 2byrow = T
  4. img <- choose.files(caption = "Select JPG files"filters = FILTERindex = 1multi=T
  5. for(i in 1:length(img)){ 
  6.     x <- readJPEG(img[i]) 
  7.     dimx <- dim(x) 
  8.     n <- dimx[1]*dimx[2] 
  9.     r <- x[1:n] 
  10.     g <- x[(n+1):(2*n)] 
  11.     b <- x[(2*n+1):(3*n)] 
  12.     ps <- 5; ps <- dimx[1]*(ps-1) + ps  # 背景取值,ps为左上到右下角的像素,5。按情况修改 
  13.     tv <-  0.1                      # tv为容差范围,0-1取值,越小越精确 
  14.     sel <- abs(r-r[ps])<tv & abs(g-g[ps])<tv & abs(b-b[ps])<tv 
  15.     alpha <- rep(1, n) 
  16.     alpha[sel] <- 0 
  17.     x <- array(c(x, alpha), dim=c(dimx[1:2], 4)) 
  18.     writePNG(x, gsub("(.+\\.)(jpg|jpeg)$","\\1png", img[i], ignore.case = TRUE)) 
  19. winDialog("ok", "Work done!") 

 

下面是几张网站徽标截图进行透明处理后在幻灯片中的叠加效果:

 

用R语言对JPG/JPEG图片进行背景透明处理 - xxx - xxx的博客
责任编辑:彭凡 来源: 网易博客
相关推荐

2017-10-12 17:58:42

C语言Gtk+应用功能测试

2021-08-27 15:30:13

PSPhotoshopPS格式

2009-06-19 16:12:22

Java语言properties

2010-09-14 09:18:28

DIVCSS

2010-09-10 10:54:24

DIV背景透明

2023-04-06 16:58:13

OpenAIChatGPT

2018-11-06 10:53:10

2010-08-24 16:07:37

C语言

2022-03-08 07:26:15

JPEGPNG图像编辑器

2010-09-13 15:32:38

DIV背景

2010-02-23 14:33:55

Python语言

2009-10-23 12:53:25

VB.NET语言

2010-10-27 10:19:33

UnicodeJava

2018-06-23 07:38:10

2018-09-26 19:51:07

数据分析Kaggle员工离职

2010-03-01 14:02:26

Python批处理语言

2021-12-17 19:27:44

开源Darktable照片处理

2021-09-05 15:55:05

WebP图片格式浏览器

2011-05-13 15:46:49

C模块化

2016-09-07 13:26:25

R语言不平衡数据
点赞
收藏

51CTO技术栈公众号