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 <
[email protected]> 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 <[email protected]>
>
>>
>> Thanks for the tip. Do you have an elisp piece that handles the image
>> insertion into org buffers?
>>
>> Thanks,
>>
>> Vitalie
>>
>> >> Klaus-Dieter Bauer <[email protected]>
>> >> 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
>> .
>>
>>
>