Как уменьшить размер файла r markdown HTML при использовании внешних веб-изображений? - PullRequest
0 голосов
/ 31 марта 2020

Файл html, созданный с использованием приведенного ниже кода, имеет размер файла 1,2 МБ, частично из-за встроенного веб-изображения. Я делаю простую веб-страницу, которая в конечном итоге будет содержать десятки этих изображений, и размер файла быстро станет огромным.

Есть ли способ программно уменьшить выборку веб-изображений так, чтобы получился файл html это управляемый размер? Я был бы в порядке с жестким кодированием уменьшенного размера разрешения для изображений; все они будут очень похожи на приведенные в примере.

Настройка параметров чанка dpi и out.width не изменила размер файла, хотя последний действительно изменил размер изображения в выводе .

Большое спасибо за вашу помощь.

---
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE, cache = TRUE)

options(scipen=999)

library(knitr)
```

```{r, out.width = "600px", dpi = 36}
include_graphics("https://i.imgur.com/BacCbVa.png")
```

1 Ответ

0 голосов
/ 31 марта 2020

Спасибо J_F за указание на пакет magick в комментариях.

Приведенный ниже код увеличил мой HTML с 1,2 МБ до 940 КБ без потери разрешения. Изменение размера масштабирования при сохранении того же значения out.width в параметрах чанка позволяет мне еще больше уменьшить размер файла, если я готов принять некоторую потерю качества изображения.

Пока это работает, но я собираюсь чтобы этот вопрос оставался открытым дольше, если у кого-то есть решение, которое еще больше уменьшит его размер.

---
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE, cache = TRUE)

options(scipen=999)

library(knitr)
library(magick)
library(tidyverse)

add_image <- function(filepath, size){
  image_read(filepath) %>% 
    image_scale(str_extract(size, "[0-9]+"))
}
```

```{r, out.width = "600px", dpi = 300}
add_image("https://i.imgur.com/BacCbVa.png", 300)
```
...