Как программно использовать.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 существует и делает такую блестящую работу. Используй это.