top  Index  Search  Changes  RSS  Login

ImageCapture

Pooh's script461さんが改造 したものを、さらに改造。

  • M-x imcap-capture してマウスのドラッグで範囲指定 → その画像をカーソル位置に貼りつけ
  • 次回開いたときは M-x imcap-display で画像を表示

ソースはページ末尾にあります。

Windows で使う

Windows 版の ImageMagick の import は使えないので代替ソフトとして WinShot を使います。インストール先は /usr/local/WinShot とします(パス名に空白が入るとうまくいかない)。さらに、.emacs に以下のように書きます。

(setq imcap-capture-command-format
      "/usr/local/WinShot/WinShot.exe -Jpeg -Rectangle -Close -File %s")

2ch: http://pc.2ch.net/test/read.cgi/unix/1063800495/467n

(も)


  • 2004-01-04 (日) 09:05:20 名無しさん : 何度もむだに create-image やら add-text-property やらするのはいいのかなあ?
  • 2004-01-08 (木) 21:48:52 名無しさん : imcap.el を気持ちよく使っていたら Howm の検索で JPEG ファイルがヒットしたときに一覧の文字が化けるようになっちゃいました。 .howm だけ検索するようにできますか?
  • 2004-01-09 (金) 00:53:10 名無しさん : (setq howm-excluded-file-regexp "\\(^\|/\\)\\([.]\|CVS/\\)\|[~#]$\|\\.\\(bak\|elc\|gz\|aux\|toc\|idx\|dvi\|jpg\|gif\|png\\)$")
  • 2004-01-14 (水) 22:59:53 : Windows で使う方法を追記してあります。
  • 2004-01-31 (土) 23:37:31 名無しさん : C-w で画像を削除 - MeadowWiki:書き散らかしメモツール―howm
  • 2004-01-31 (土) 23:43:20 作者 : 誰かまとめてメンテ・配布してくれないかなあ. Pooh さんに引きとってもらう?
  • 2004-02-01 (日) 03:34:15 名無しさん : convert-standard-filename ?
  • 2004-02-03 (火) 22:31:17 名無しさん : navi2ch スレのを参考に, サムネイル版作らない? http://pc.2ch.net/test/read.cgi/unix/1065246418/525
  • 2004-02-06 (金) 08:34:15 名無しさん : サムネイル版。MeadowWiki:書き散らかしメモツール―howm
  • 2004-02-18 (水) 12:46:17 名無しさん : iimage minor mode http://www.netlaputa.ne.jp/~kose/Emacs/iimage.html
  • 2004-03-07 (日) 03:57:20 名無しさん : Meadow2で画像表示すると、元のtextのunderlineのfaceが、画像の上に表示されます。Meadow2のバグでしょうかねぇ・・・
  • 2004-03-10 (水) 00:15:32 名無しさん : 手がまわらないんで、meadow 使いな方にお願いしたいです _o_ > face が画像の上に
  • 2004-03-22 (月) 23:17:41 名無しさん : 「face が画像の上に」の件ですがEmacs21.2.1においても起こっているのですが、最新Emacsでは起こっていないのでしょうか?
  • 2004-03-26 (金) 17:12:42 名無しさん : imcap.el はキャプチャだけにして、画像表示は上の iimage minor mode を使う方が幸せになれそう。
  • 2004-04-06 (火) 17:57:48 名無しさん : ↑iimageは、Windows PATHを認識しないので使いにくくて・・・素直にfaceからアンダーバー省くか。
  • 2004-04-07 (水) 01:21:00 名無しさん : iimage-mode-image-filename-regex いじってどうにか? > win path
  • 2004-04-07 (水) 02:09:52 名無しさん : いじるなら iimage のロード前に > iimage-mode-image-filename-regex
  • 2004-04-10 (土) 00:27:54 名無しさん : 一番下にある、「ドラッグ&ドロップ・・」便利っすねぇ。
  • 2004-05-01 (土) 00:29:01 松下 : 「face が画像の上に」の件ですが、仕様らしいです。(create-image fileloc nil nil :ascent 100)とでもすると回避できます。
  • 2005-04-01 (金) 07:38:33 t : http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=imcap%20resize に画像の縮小・拡大が可能なimcap が
(Please LogIn to post comments.)

imcap.el

;;; imcap.el: capture images

;;; M-x imcap-capture
;;; M-x imcap-display

;;; var

(defvar imcap-capture-command-format "import %s")
(defvar imcap-paste-format ">>> %s")
(defvar imcap-file-name-format "%Y-%m-%d-%H%M%S.jpg")
(defvar imcap-directory nil)  ;; nil means current directory
; (defvar imcap-directory "~/imcap")

;;; command

(defun imcap-capture ()
  (interactive)
  (let* ((filename (format-time-string imcap-file-name-format (current-time)))
         (fileloc (imcap-expand-file-name filename))
         (command (format imcap-capture-command-format fileloc))
         (paste (format imcap-paste-format
                        (if imcap-directory
                            fileloc
                          filename))))
    (when (and (file-exists-p fileloc)
               (not (y-or-n-p ("File %s exists. Overwrite? " fileloc))))
      (error))
    (shell-command command)
    (insert paste)
    (imcap-display)
    (message fileloc)))

(defun imcap-display ()
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (let ((buffer-read-only nil)
          (modified-p (buffer-modified-p)))
      (while (imcap-goto-next-image)
        (let* ((region (imcap-image-region))
               (filename (imcap-image-file))
               (fileloc (imcap-expand-file-name filename)))
          (when (file-exists-p fileloc)
            (let ((start (car region))
                  (end (cadr region))
                  (image (cons 'image (cdr (create-image fileloc)))))
              (add-text-properties start end
                                   (list 'display image
                                         'intangible image
                                         'rear-nonsticky (list 'display)))))))
      (set-buffer-modified-p modified-p))))

;;; private

(defun imcap-expand-file-name (filename)
  (abbreviate-file-name (expand-file-name filename imcap-directory)))

(defun imcap-goto-next-image ()
  (let ((regexp (format (regexp-quote imcap-paste-format)
                        "\\(.*\\.\\(jpg\\|png\\|gif\\)\\)")))
    (re-search-forward regexp nil t)))

(defun imcap-image-file ()
  (match-string-no-properties 1))

(defun imcap-image-region ()
  (list (match-beginning 0) (match-end 0)))

;;; provide

(provide 'imcap)

Windows で画像が保存できない

WinShot は Windows のソフトであり、~/howm/2004-01-01.jpg のようなパスを展開できない。そのため、保存できないというエラーになってしまう。とりあえずは以下のように変更すれば逃げることができる(松下)。

--- imcap.el	2004-02-01 01:17:54.455291200 +0900
+++ imcap2.el	2004-02-01 01:17:49.778566400 +0900
@@ -20,7 +20,7 @@
          (command (format imcap-capture-command-format fileloc))
          (paste (format imcap-paste-format
                         (if imcap-directory
-                            fileloc
+                            (abbreviate-file-name fileloc)
                           filename))))
     (when (and (file-exists-p fileloc)
                (not (y-or-n-p ("File %s exists. Overwrite? " fileloc))))
@@ -53,7 +53,8 @@
 ;;; private
 
 (defun imcap-expand-file-name (filename)
-  (abbreviate-file-name (expand-file-name filename imcap-directory)))
+  ;;(abbreviate-file-name (expand-file-name filename imcap-directory)))
+  (expand-file-name filename imcap-directory))
 
 (defun imcap-goto-next-image ()
   (let ((regexp (format (regexp-quote imcap-paste-format)

ドラッグ&ドロップで貼り付け

imcapといっしょに使うことで、画像などのファイルをexplorer等からドラッグ&ドロップ(Shiftを押しながらドロップ)で貼り付けることができます。(R)

(when (eq window-system 'w32)
  (defun howm-w32-dnd-ref-file (event)
    "Add ref to drop files."
    (interactive "e")
    (mapc
     #'(lambda (file)
         (insert (format howm-template-file-format file) "\n"))
     (car (cdr (cdr event)))))
  (eval-after-load "howm-mode"
    '(progn
       (define-key howm-mode-map [S-drag-n-drop] 'howm-w32-dnd-ref-file))))

Last modified:2008/03/09 15:01:55
Keyword(s):
References:[併用ツール] [Windows] [EmbeddedImage]