Сохраняйте пропорции изображения с помощью функции bodyRreplace_img_at_bkm officeR package - PullRequest
0 голосов
/ 12 февраля 2020

Можно ли сохранить оригинал с соотношением сторон при вставке изображения в документ .docx с функцией body_replace_img_at_bkm() из пакета officer?

мой код выглядит так:

library(officer)
library(magrittr)

img.file <- file.path( R.home("doc"), "html", "logo.jpg" )

doc <- read_docx() %>% 
  body_add_par("centered text", style = "centered") %>%
  slip_in_text(". How are you", style = "strong") %>%
  body_bookmark("text_to_replace") %>%
  body_replace_img_at_bkm("text_to_replace", value = external_img(src = img.file, width = .03, height = .03)) %>%
  print(target = "yourpath/KeepAspectRatio.docx")  

Я пробовал это:

...
body_replace_img_at_bkm("text_to_replace", value = external_img(src = img.file)) %>%
...

Это не сработало. Это показывает изображение с (я полагаю) правильным соотношением сторон, но изображение не желаемого размера. Я хочу уменьшить его без изменения соотношения сторон.

Заранее большое спасибо

ps Мне пришлось использовать width = .03, height = .03 в моем случае, потому что по какой-то причине изображение было огромным.

1 Ответ

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

Для файлов png я нашел следующее решение / альтернативу:

library(png)

ImgZoom <- 3

temp <- readPNG("filepath.png",native = TRUE,info = TRUE)

body_replace_img_at_bkm("text_to_replace",
                        value = external_img(src = img.file
                                             ,width = ImgZoom*(attr(temp,"info")$dim[1]/attr(temp,"info")$dim[2])
                                             ,height = ImgZoom*(attr(temp,"info")$dim[2]/attr(temp,"info")$dim[2])))

Но это небольшой обходной путь, который пока работает только для файлов png. Я также попробую это для других типов файлов.

Лучшим способом была бы дополнительная опция в функции: body_replace_img_at_bkm().

Что-то вроде: body_replace_img_at_bkm(...,keep_aspect_ratio = TRUE)

...