トップ «前の日記(2003-07-07 (Mon)) 最新 次の日記(2003-07-09 (Wed))» 編集

猫熊は燃えつきた?!日記

最近なんにもやっていませんが、なにかやったらこちらに置くようにしています。
2002|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|
2011|09|
2012|02|


2003-07-08 (Tue) 画像関連二題 [長年日記]

ふふふ、勝ったな

[Meadow-users: 4640] IE6 では、縮小画面しか表示できないようだが、Mozilla Firebird ではマウスのクリックで、縮小←→原寸が切り替わるのだよ。デジカメの画像は、もっぱら、thumbnail を抽出して、(確かたつをさんの日記にあった簡単な Perl Script を改造して)index.html 書いて Firebird でみているのだ。

久々の寄生虫

[Meadow-users: 4637] に書いた Mew + Emacs21 で image/* な part だけど、大きい画像で Frame に入らないときは、適当に縮小して表示するもの。ちゃんと見たいときは C-cC-e で外部 viewer を使えば良いよね。キャッシュ機能付きなので、小さい画像も快適になるかもしれないし、Meadow2 でも動くかもしれない。
ただし、エラーガードはほとんどしていないし、要 ImageMagick の identify と convert。
(defvar mew-mime-image-cache-length 30 "*Cache size")
(defvar mew-mime-image-max-coeff 0.9 "*Frame に対する画像の最大値の割合")
 
(defvar mew-mime-image-cache nil)
 
(defun mew-mime-image (cache begin end format)
  "hoge"
  (message "Loading image...")
  (set-buffer (mew-buffer-message))
  (let* ((fld (mew-minfo-get-summary))
         (msg (mew-current-get-msg (mew-frame-id)))
         (part (mew-current-get-part (mew-frame-id)))
         (key `(,fld ,msg ,part ,begin ,end))
         (maxwidth (truncate (* (frame-pixel-width (selected-frame))
				mew-mime-image-max-coeff)))
         (maxheight (truncate (* (frame-pixel-height (selected-frame))
				 mew-mime-image-max-coeff)))
	 original img conv width heigth x y)
    (mew-erase-buffer)
    (condition-case nil
        (if (setq img (assoc key mew-mime-image-cache))
            (mew-elet
             (setq mew-mime-image-cache
                   (cons img (delete img mew-mime-image-cache)))
             (setq conv 'cache)
             (insert-image (cdr img)))
          (with-temp-buffer
            (save-excursion
              (set-buffer cache)
              (setq img (mew-buffer-substring begin end))
	      (setq original img))
            (insert img)
            (buffer-disable-undo)
            (set-buffer-multibyte nil)
            (mew-flet
	     (apply 'call-process-region
		    (point-min) (point-max)
		    "identify" t (current-buffer) nil '("-"))
	     (goto-char (point-min))
	     (setq width 1)
	     (setq heigth 1)
	     (when (re-search-forward " \\([1-9][0-9]*\\)x\\([1-9][0-9]*\\)+" nil t)
	       (setq width (string-to-number (match-string 1)))
	       (setq heigth (string-to-number (match-string 2))))
	     (when (or (> width maxwidth) (> heigth maxheight))
	       (erase-buffer)
	       (setq conv t)
	       (setq x (/ width (float maxwidth)))
	       (setq y (/ heigth (float maxheight)))
	       (setq width (floor (/ width (max x y))))
	       (setq heigth (floor (/ heigth (max x y))))
	       (insert img)
	       (message "Loading image(convert)...")
	       (apply 'call-process-region
		      (point-min) (point-max)
		      "convert" t (current-buffer) nil
		      (list "-sample"
			    (format "%dx%d!" width heigth)
			    (format "%s:-" format)
			    (format "%s:-" format)))
	       (setq img (buffer-substring (point-min) (point-max))))))
	  (setq img (create-image (string-as-unibyte img) nil t))
	  (setq mew-mime-image-cache (cons (cons key img) mew-mime-image-cache))
          (when (> (length mew-mime-image-cache) mew-mime-image-cache-length)
            (setcdr (nthcdr (1- mew-mime-image-cache-length) mew-mime-image-cache) nil))
          (mew-elet (insert-image img)))
      (error ()))
    (goto-char (point-min))
    (message "Loading image%s...done"
             (cond
              ((eq conv 'cache) "(cache)")
              (conv "(resize)")
              (t "")))))

マジック点灯

おめでとうございます。今年 もう好きにしてくださいませ。

しかし、先は長いですよ。8月は気をつけましょうね。

長嶋ジャパン

なぜにが?オリンピックはやっぱりお祭りなのか??


書いている人: 白井秀行 (mailto:shirai@meadowy。org)
訪問して下さった人: 今日: 人, 昨日: , 過去: 人 (2007年5月10日から)
RDF Feed