如何以编程方式在绘图中使用 .ico 图像 with/without 转换

How to use .ico images in plots programmatically with/without conversion

如何以编程方式在绘图中使用 .ICO 图像文件 with/without 转换?

我的问题是 How to convert .ICO to .PNG? 的后续问题,针对 R,具体细节如下:

这样做的动机很简单,有许多图标的开源库可以在绘图对象中使用,例如Inserting an image to ggplot2, Display custom image as geom_point, Inserting an image to ggplot outside the chart area.

在我在顶部引用的问题 How to convert .ICO to .PNG? 中,C#Python 中有代码示例,但 R 中有 none ].

在您的系统上安装 ImageMagick您的系统 - 它不是 R 包)。它是一套开源图像处理和转换工具。

然后您可以从命令行使用 convert foo.ico foo.png 转换图标。如果 ICO 文件包含多个图标,您会得到 foo-1.icofoo-N.ico。如果 convert 不起作用,则说明您没有正确安装 ImageMagick。

如果您想从 R 执行此操作,请使用 system 函数:

 name = "foo"
 system(paste0("convert ",name,".ico ",name,".png"))

然后使用生成的PNG文件。它们将保留所有属性(透明度等),并且可以像这些包中可用的任何其他 PNG 文件一样使用,这超出了这个问题的范围。您现在有了 PNG 文件。

一个 可以 编写一个 R 包来本地读取 ICO 文件(规范在维基百科上)但是当 ImageMagick 存在并且做得如此出色时它似乎有点毫无意义。使用它。

现在有一个 magick 包,你不需要再使用 system:

library(magick)
path  <- "magic.png" # wherever you want to save
image <- image_read("https://rpubs.com/favicon.ico") # works with local path as well

在 R studio 中,这将在绘图 window 中打印我们的图像,对于 ico 文件,它显示文件中可用的不同图标。

image 

然后你就可以保存成你想要的格式了:

image_write(image,path,"png")
file.exists(path)
# [1] TRUE

a really cool vignette: