Как программно использовать.ico изображения на графиках с / без конвертации

Как пользоваться .ICO файлы изображений на графиках программно с / без конвертации?

Мой вопрос является продолжением Как конвертировать.ICO в.PNG?, нацеленный на R и со следующими конкретными деталями:

  • Я не спрашиваю о методах включения значков в HTML например, внутри shiny приложение (автор: RStudio). Это конечно возможно.

  • Можно иконки .ICO файлы будут использоваться непосредственно в графике base-R, объекте ggplot (автор: Хэдли Уикхем), решетчатом графике (автор: Дипаян Саркар)? И будет ли этот подход надежным для вывода на PDF?

  • Как конвертировать ICO иконки для PNG с или без выделенного R библиотека. Этот метод будет осторожен при обработке размера изображения, глубины, прозрачности и других потенциально важных свойств.

Мотивация для этого заключается просто в том, что существует множество библиотек значков с открытым исходным кодом, которые можно использовать внутри объектов графика, например, Вставка изображения в ggplot2, Отображение пользовательского изображения как geom_point, Вставка изображения в ggplot вне области диаграммы.

В вопросе, который я цитирую вверху, Как конвертировать.ICO в.PNG? есть примеры кода в C# И в Python но никто в R,

2 ответа

Решение

Теперь есть 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 это напечатает наше изображение в окне графика, для файлов ico - различные значки, доступные в файле.

image 

Затем вы можете сохранить в желаемом формате:

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

Там действительно классная виньетка:

Установите ImageMagick в вашей системе (ваша система - это не пакет R). Это набор инструментов для работы с изображениями и преобразования изображений с открытым исходным кодом.

Из командной строки вы можете преобразовать значки convert foo.ico foo.png, Если файл ICO содержит несколько значков, вы получите foo-1.ico в foo-N.ico, Если convert не работает, значит, вы неправильно установили ImageMagick.

Если вы хотите сделать это из R, то используйте system функция:

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

Затем используйте сгенерированные файлы PNG. Они сохранят все свойства (прозрачность и т. Д.) И будут использоваться так же, как и любые другие файлы PNG, используемые в этих пакетах, что выходит за рамки этого вопроса. Теперь у вас есть файлы PNG.

Можно написать R-пакет для естественного чтения файлов ICO (спецификация есть в Википедии), но это кажется немного бессмысленным, когда ImageMagick существует и делает такую ​​блестящую работу. Используй это.

Другие вопросы по тегам