R语言也能玩ps?magick包你值得拥有
本日要给各人先容的是2017年的一款新包——magick包。大概各人看到推文题目也都知道了,这是一款图片与图像处理惩罚的扩展包,今后ps能做的R语言必然水平上也可以做啦。究竟从大数据的角度来讲,图片图像数据也是数据嘛。
安装安装和载入magick包后,可查察在R语言中支持哪些图片名目。install.packages(“magick”)library(magick)str(magick::magic_config())## List of 21## $ version :Class ‘numeric_version’ hidden list of 1## ..$ : int [1:4] 6 9 6 6## $ modules : logi FALSE## $ cairo : logi TRUE## $ fontconfig : logi TRUE## $ freetype : logi TRUE## $ fftw : logi FALSE## $ ghostscript : logi FALSE## $ jpeg : logi TRUE## $ lcms : logi FALSE## $ libopenjp2 : logi FALSE## $ lzma : logi TRUE## $ pangocairo : logi TRUE## $ pango : logi TRUE## $ png : logi TRUE## $ rsvg : logi TRUE## $ tiff : logi TRUE## $ webp : logi TRUE## $ wmf : logi FALSE## $ x11 : logi FALSE## $ xml : logi TRUE## $ zero-configuration: logi FALSE可见magick包在R语言中支持大部门图片名目,常见的jpeg和png名目就足以办理大部门图片名目问题。
图片输入与输出magick包可以通过image_read函数直接从文件路径、URL和图片数据原始向量中读入图片,读入乐成可以显示图片的一些根基信息。先读入一只老虎看看:tiger <- image_read(‘http://jeroen.github.io/images/tiger.svg’)image_info(tiger)## format width height colorspace filesize## 1 png 900 900 sRGB 0图片读入之后还可以通过image_write函数将图片输出,另存为任何图片名目也是可以的。image_write(tiger, path = “tiger.png”, format = “png”)
图片处理惩罚假如是仅仅读入读出图片,那magick包也没多大意义了。一般图片处理惩罚软件中的成果magick也可以处理惩罚。
裁剪与编辑magick提供了一些形如AxB+C+D一类的转换函数来实现对图片的裁剪与编辑处理惩罚。好比说:image_crop(image, “100×150+50”)image_scale(image, “200”)image_scale(image, “x200”)image_fill(image, “blue”, “+100+200”)image_border(frink, “red”, “20×10”)
下面通过实例看看各函数用法寄义。先读入一个celtic图片:celtics <- read_image(“F:/R/celtics.png”)print(celtics)加个20×10的绿框看看:image_border(celtics,”green”,”20×10″)从右边裁掉5个尺寸:image_crop(celtics,”100×150+5″)放个大看看:image_scale(celtics,”200″)换个边儿看看:image_flop(celtics)其他的像旋转、倒置、缩放等操纵都是有雷同函数可以处理惩罚的,详细可查阅magick辅佐文档。再上个配景致,把绿凯酿成粉凯:image_backgroud(celtics,”pink”,flattern=TRUE)虚化一下绿凯:image_blur(celtics,10,5)雷同的处理惩罚操纵有点多,小编就纷歧一展示了。有乐趣的伴侣可以本身去摸索。
添加文本magick包也提供了为图片添加文本信息的成果,且看实例。为绿凯喊个标语:image_annotate(celtics, “Beat LA!”, size = 35, gravity = “southwest”, color = “green”)管道操纵举办链接假如你嫌一次只举办一个处理惩罚太贫苦,magick和magrittr包连系利用大可以让你实现这些操纵。相信你在dplyr包中已经见地到了这些%>%管道操纵符的锋利了。library(magrittr)image_read(“F:/R/celtics.png”) %>% image_rotate(270) %>% image_background(“pink”, flatten = TRUE) %>% image_border(“green”, “10×10”) %>% image_annotate(“Beat LA!”, color = “black”, size = 30)图片向量以上都是针对单张图片举办处理惩罚的。magick包内里所有函数都具有向量化成果,可以支持图层叠加、拼图以及动图处理惩罚。先看个动态的地球:earth <- image_read(“https://jeroen.github.io/images/earth.gif”)earth <- image_scale(earth, “200”)length(earth)print(earth)叠加我们也可以像在ps内里一样举办图层叠加。bigdata <- image_read(‘https://jeroen.github.io/images/bigdata.jpg’)frink <- image_read(“https://jeroen.github.io/images/frink.png”)logo <- image_read(“https://www.r-project.org/logo/Rlogo.png”)img <- c(bigdata, logo, frink)img <- image_scale(img, “300×300”)image_info(img)## format width height colorspace filesize## 1 JPEG 300 225 sRGB 0## 2 PNG 300 263 sRGB 0## 3 PNG 148 300 sRGB 0image_mosaic(img)组合也可以把几张图片组合在一起。固然较量丑,但重在成果展示一下。left_to_right <- image_append(image_scale(img, “x200”))image_background(left_to_right, “white”, flatten = TRUE)加个stack参数也可以竖着组合,这里不再演示。
扫描文档为图片magick还可以将指定PDF文档扫描为png等图片名目标形式。且看例子:manual <- image_read(‘https://cran.r-project.org/web/packages/magick/magick.pdf’, density = “72×72”)image_info(manual)image_convert(manual[1], “png”, 8)这里需要借助pdftools包来实现:library(pdftools)bitmap <- pdf_render_page(‘https://cran.r-project.org/web/packages/magick/magick.pdf’, page = 1, dpi = 72, numeric = FALSE)image_read(bitmap)动图magick做GIF动图也是毫无压力的:image_animate(image_scale(img, “200×200”), fps = 1, dispose = “previous”)最后展示一个R logo的动态图:newlogo <- image_scale(image_read(“https://www.r-project.org/logo/Rlogo.png”), “x150”)oldlogo <- image_scale(image_read(“https://developer.r-project.org/Logo/Rlogo-3.png”), “x150”)frames <- image_morph(c(oldlogo, newlogo), frames = 10)image_animate(frames)总结从上面的演示各人也都看到了,magick包包括了大部门ps所具备的成果,今后用R语言p个图什么的也都是分分钟的事啦。
参考资料:http://127.0.0.1:19145/library/magick/doc/intro.html
接待插手本站果真乐趣群贸易智能与数据阐明群乐趣范畴包罗各类让数据发生代价的步伐,实际应用案例分享与接头,阐明东西,ETL东西,数据客栈,数据挖掘东西,报表系统等全方位常识QQ群:81035754