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 <
bauer.klaus.die...@gmail.com> 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 <spinu...@gmail.com>
>
>>
>> Thanks for the tip. Do you have an elisp piece that handles the image
>> insertion into org buffers?
>>
>> Thanks,
>>
>>     Vitalie
>>
>>  >> Klaus-Dieter Bauer <bauer.klaus.die...@gmail.com>
>>  >> 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