前にやった以下の続き
まずPythonで
ファイル名を『get_image_size_tag_for_html.py』にして、とりあえずホームに置いた場合(~/get_image_size_tag_for_html.py)
#!/usr/bin/env python # *-# -*- coding: utf-8 -*- import PIL.Image import os.path import sys def get_image_size(path): f = PIL.Image.open(path) file_name = path return '<img src="%s" alt="" width="%d" height="%d" />' % (file_name, f.size[0], f.size[1]) def use_command_at_elisp(fanc, img_file_path=""): if 1 < len(sys.argv): arg = sys.argv[1] else: arg = img_file_path try: #use "***No error.**" at emacs lisp ret_value = "***No error.***\n%s" % fanc(arg) except IOError, strerror: ret_value = strerror return ret_value if __name__ == '__main__': #test #print use_command_at_elisp(get_image_size, "test/hoge.gif") print use_command_at_elisp(get_image_size)
Emacs Lispも書く
~/.emacs.elとかに
(defun my-html-insert-img-tag-and-size (image_path) (interactive "sImage file path: ") (setq ret_value (shell-command-to-string (concat "~/get_image_size_tag_for_html.py " image_path))) (if (string= (substring ret_value 0 15) "***No error.***") (progn (insert (substring ret_value 16)) (backward-delete-char 1)) (message (substring ret_value 0 -1)) ))
実行してみる
Pythonのファイルは実行権限を与えとく
んで、Emacsで『M-x my-html-insert-img-tag-and-size』とかってやると、ミニバッファに『Image file path:』って表示されるから画像ファイルのパスを入力して実行(例:"test/hoge.gif")
<img src="test/hoge.gif" alt="" width="7" height="6" />
ってな感じの文字列がカーソル位置に入る。
エラーの時も一応ミニバッファに何やら表示される。
感想
もっとスマートでシンプルな方法ないかな?