[Mew-dist 16319] Re: インライン画像

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2001年 2月 14日 (水) 19:50:43 JST


From: Jun-ichiro itojun Hagino <itojun at example.com> さん曰く
Subject: [Mew-dist 16317] Re: インライン画像 
Message-ID: <20010214095015.57F157E9F at example.com>
Date: Wed, 14 Feb 2001 18:50:23 +0900

itojun> >具体的には、Microsoft Outlook Express 5.00.2014.211 で添付された jpeg 
itojun> >画像です。同じ人から受け取った添付メールにも関わらず、きちんと描写され
itojun> >る画像とそうでない画像があります。
itojun> >前述の白い四角が写る場合、Emacs 21 を起動した端末に:
itojun> >	memory_source: Not a TIFF file, bad magic number 55551 (0xd8ff).
itojun> >とエラーが出力されます。写る画像とダメな画像をセーブして file(1) して
itojun> >みると:
itojun> >	dame.jpg: JPEG image data
itojun> >	yoi.jpg:  JPEG image data, JFIF standard
itojun> >となっています。
itojun> 
itojun> 	emacs21の内部構造は知りませんが、JFIF APP0 tagを要求しているのだと
itojun> 	すると、jpeg画像一般を判定する条件としてはちょっと厳しすぎます。
itojun> 	(あたまが0xff 0xd8ならなんでもアリのはず)

というか、0xff d8 (SOI) を

itojun> >	memory_source: Not a TIFF file, bad magic number 55551 (0xd8ff).

0xd8ff と思っている段階で問題があるような気がします。
10進で 55551 って出しているということは、どっかで、エンディアン
が狂っているのですよね。0xffd8 なら JPEG だと思ってくれるんじゃ
ないのかな?

..............
 

で、memory_source 周辺を見ても、全然わからなかったので、僕の
Emacs-21.0.97 の image.el を見ると、

(defconst image-type-regexps
  '(("^/\\*.*XPM.\\*/" . xpm)
    ("^P[1-6]" . pbm)
    ("^GIF8" . gif)
    ("JFIF" . jpeg)
    ("^\211PNG\r\n" . png)
    ("^#define" . xbm)
    ("^\\(MM\0\\*\\)\\|\\(II\\*\0\\)" . tiff)
    ("^%!PS" . ghostscript))

になっていて、確かに 0xffd8 ではじまっている data を自動的には
JPEG と見なしてくれないようです。実験した JPEG Data では JFIF で
引っ掛かっても良いような気もするのですが、その辺は良くわかりませ
んでした。というわけで、簡単な方向に逃げて、

(eval-after-load "image"
  '(setq image-type-regexps
 	 (cons (cons "^\377\330\377\340" 'jpeg) image-type-regexps)))

とすると、使用前は 白い四角だったけど、使用後は画像データを表示
することが出来ました。

itojun> >	memory_source: Not a TIFF file, bad magic number 55551 (0xd8ff).

だけど、私の場合、このエラーは出なかった。

itojun> 	例えば、Exif規格のデジカメ画像も全滅ではないですか?

## デジカメ系は全然しらないのでパス。^^;;;

-- 
白井秀行 (mailto:shirai at example.com)



Mew-dist メーリングリストの案内