Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Copy and paste an image from clipboard to Rmarkdown / .rmd code

How can I copy an image to the clipboard and then directly insert/paste it in an .Rmd file?

See also here: https://github.com/rstudio/rstudio/issues/4038

enter image description here

Spoiler: I wanted to post this question and then decided to give it a shot myself. (It is a bit weird asking a question and answering it yourself, but when i read this i felt motivated enough :) https://stackoverflow.com/help/self-answer)

So far i got a workaround via python (see answer below), but it works and saved me quite some silly work. So i decided i might not be the only one googling that question and share my result.

like image 924
Tonio Liebrand Avatar asked Apr 05 '19 18:04

Tonio Liebrand


1 Answers

I wrote a little RStudio addin and shared it here: https://github.com/Timag/imageclipr. Edit: It works now without Python across plattforms (Mac, Windows, Linux), thanks to great contributions.

enter image description here

Walkthrough:

Basically i started here: How do I read a jpg or png from the windows clipboard in python and vice versa?.

I use this code to save the image:

from PIL import ImageGrab
im = ImageGrab.grabclipboard()
im.save('somefile.png','PNG')

Then i wrote a wrapper with library(reticulate) to run the python code from R. Thats what covers the "right part" of the gif: To copy the image to a directory.

For the "left part" I use library(rstudioapi). I take the current

  • file: getActiveDocumentContext()$id
  • line: getActiveDocumentContext()$selection[[1]]$range$start
  • directory: getActiveDocumentContext()$path

And then wrote a small RStudio addin: https://rstudio.github.io/rstudioaddins/.

like image 81
Tonio Liebrand Avatar answered Sep 22 '22 11:09

Tonio Liebrand