今回のネタはかなり人を選ぶと思う。
つうのは、「レベルが高い」とかじゃなくて。こんなん、需要ないと思うのよね。
こういう困り方をしてる人限定:
- チーム(プロジェクト)は全員 Windows
- インターネットには気軽には行けない(か全く行けない)
- 教育とか技術周知にアニメーションGIFを使いたくなった
- けれども GIF ダブルクリックが IE に関連付いているとは限らない
- 「ブラウザで開いてね」と説明するの面倒だわぁ
ありがちなのが「Windowsフォトビューワ」に関連付けされているケース。「Windowsフォトビューワ」は、少なくともWindows 7 のそれは、「アニメーションGIF」だとは思ってくれない。
こういうときに頼りになるのは「新しい技術」ではなくて、むしろ旧態依然のテクノロジ。
上画像の「mht」。これ、ただの MIMEMultipart。MIME は登場した年からの付き合いの割には全然知らないので、「それ」が MS 方言なのかどうか、とかそんなことは知らない。ただ、とにかく以下で画像一個を mht に出来る:
1 # -*- coding: utf-8 -*-
2 from email.mime.image import MIMEImage
3 from email.mime.multipart import MIMEMultipart
4 from email.mime.text import MIMEText
5 import sys
6 import os
7 filename = sys.argv[1]
8 filebase = os.path.basename(filename)
9
10 outer = MIMEMultipart()
11 outer['Subject'] = filebase
12 outer.preamble = 'This is a multi-part message in MIME format.\n'
13
14 msg = MIMEText("""\
15 <html>
16 <body>
17 <img src="{}"/>
18 </body>
19 </html>
20 """.format(filebase), _subtype="html")
21 msg.add_header('Content-Location', "{}.html".format(filebase))
22 outer.attach(msg)
23 img = MIMEImage(open(filename, "rb").read())
24 img.add_header('Content-Location', "{}".format(filebase))
25 outer.attach(img)
26 temp = outer.as_string().split("\n")
27 temp[0] = temp[0].replace(
28 "Content-Type: multipart/mixed; ",
29 "Content-Type: multipart/related; type=text/html; ")
30 open(filebase + ".mht", "w").write("\n".join(temp))
最後の replace が凄まじく気に入らないのだけれど、これ、入れないと面白いことになるので、是非試してみ。
gif とは違って、余程の天邪鬼(単なるマニア?)の環境でない限り mht は普通は IE か Outlook のどちらかが反応するので、「LAN内のファイルサーバ」に説明なく置いておいても皆「動画だ!」と気付いてくれる。
ところで、こうやって作った mht を「素晴らしい」とかってインターネットの世界にバラまかないでね。こんなん受け取った *nix/Macユーザはたまらん。
追記 ほんとに Windows 限定で、「ちゃんとしたプレゼン」したいなら、きっとパワポあたりで真面目なプレゼン資料作る方がいいのだよ、こういう「インチキプレゼン」に飛びつかずに。でもね、「ちょっとした非公式の説明」したいことって、あるでしょう? そんなときに時間かけたくないじゃん。