emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Help, I need to paste raw image from clipboard into emacs/orgmod


From: Alexander Vorobiev
Subject: Re: [O] Help, I need to paste raw image from clipboard into emacs/orgmode
Date: Wed, 6 Nov 2013 09:28:05 -0600

Hi Klaus,

I found the function very useful so I expanded it a little to have more flexible image file names. First, I use the base name of the file in the current buffer as a prefix to the image file name. Then I added an integer buffer-local variable to be the image file name's suffix (preceded by an underscore) which is incremented every time new image is pasted:

   #+begin_src emacs-lisp
     (defvar org-clipboard-image-suffix 0)
     (make-variable-buffer-local 'org-clipboard-image-suffix)
     (setq-default org-clipboard-image-suffix 0)
     
     (defun org-insert-clipboard-image ()
       (interactive)
       (incf org-clipboard-image-suffix)
       (let* ((image-file
               (concat (file-name-base (buffer-file-name))
                       "_"
                       (format "%d" org-clipboard-image-suffix)
                       ".png"))
              (exit-status 
               (call-process "convert" nil nil nil 
                             "clipboard:" image-file)))
         (org-insert-link nil (concat "file:" image-file) "")))
     #+end_src

It would be very convenient if there were a way to determine if the clipboard contains an image, then use defadvice to call this function with, say, org-yank. Unfortunately I couldn't find any emacs functions to query properties of the content of the (Windows) clipboard. I only see w32-get-clipboard-data which returns only text.

Regards,
Alex


On Fri, Jun 7, 2013 at 1:15 PM, Klaus-Dieter Bauer <address@hidden> wrote:
(defun my-org-insert-clipboard ()
  (interactive)
  (let* ((image-file "clipboard.png")
(exit-status 
 (call-process "convert" nil nil nil 
"clipboard:" image-file)))
    (org-insert-link nil (concat "file:" image-file) "")
    (org-display-inline-images)))

That works for me (Emacs 24.3, Windows 7) though for practical use some more edge case handling ("don't insert on failure", "different name if file exists") will be wanted. 

kind regards, Klaus


2013/6/7 Vitalie Spinu <address@hidden>

Thanks for the tip. Do you have an elisp piece that handles the image
insertion into org buffers?

Thanks,

    Vitalie

 >> Klaus-Dieter Bauer <address@hidden>
 >> on Thu, 6 Jun 2013 19:16:26 +0200 wrote:

 >     Dear All,
 >     Please Help,
 >     I need to paste raw image from clipboard into emacs/orgmode, I am a
 >     microsoft onenote user and I got used to take a lot of snapshots and embed
 >     it into my notes, I think if I could know how to embed images directly into
 >     emacs/orgmode from clipboard, I will switch to emacs very easily.

 >     I searched the internet but unfortunately I didn't find the answer,
 >     Thanks a lot.
 >     Dodo

 > Hello!

 > While the original poster probably long since has implemented one of the
 > previously suggested solutions (or given up) I thought I'd share a more general
 > solution I found [1].

 > ImageMagick's `convert' can use clipboard: as input file (don't know if it works
 > as output file).

 > convert clipboard: FILENAME-WITH-EXTENSION

 > I tested it with the cygwin and native windows versions and both worked.

 > king regards, Klaus

 > PS1: On Windows `convert.exe' might be shadowed by another executable,
 > especially C:\Windows\System32\convert.exe. In that case the PATH variable
 > should be adjusted such that ImageMagick comes before C:\Windows\system32. To
 > check what shadows the executable, you can run "where convert" in the
 > Windows-commandline.
 > PS2: On Windows only basic image-displaying-support is included out-of-the-box.
 > To get full support, the easiest way is to install the full GnuWin32 tools
 > (which include the necessary image libraries) with the web-installer.

 > ------

 > [1] User "magick" in
 > http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=7524&p=22859.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]