読者です 読者をやめる 読者になる 読者になる

MoinMoinでWebP画像を表示する

moin

moin-1.9.8を使っています。PNG画像を減色して貼り付けていたのですが試しにWebPにしたらめちゃめちゃ小さくなるじゃないですか!
しかしmoin-1.9.8はWebPをアップロードしても画像とは認識してくれませんでした。
むむぅ。

ということでMoinMoinのコードを読んでみる。imgタグを生成してるのはここ。

http://hg.moinmo.in/moin/1.9/file/dbe605c5867c/MoinMoin/action/AttachFile.py#l1161

1160     # destinguishs if browser need a plugin in place
1161     if mt.major == 'image' and mt.minor in config.browser_supported_images:
1162         url = getAttachUrl(pagename, filename, request)
1163         request.write('<img src="%s" alt="%s">' % (
1164             wikiutil.escape(url, 1),
1165             wikiutil.escape(filename, 1)))
1166         return
1167     elif mt.major == 'text':
1168         ext = os.path.splitext(filename)[1]

ふむふむMIMEタイプがbrowser_supported_imagesにあればimgタグになるようになってるな。

browser_supported_imagesを確認してみる。

http://hg.moinmo.in/moin/1.9/file/dbe605c5867c/MoinMoin/config/__init__.py#15

14 # List of image types browser do support regulary
15 browser_supported_images = ('gif', 'jpg', 'jpeg', 'png', 'bmp', 'ico', )

あ、やっぱりwebpが入ってない。
ということでwikiconfig.pyでもろもろ追加。

import mimetypes
mimetypes.add_type('image/webp', '.webp', True) ### .webp は image/webp
import MoinMoin.config
MoinMoin.config.browser_supported_images = tuple(list(MoinMoin.config.browser_supported_images) + ['webp']) ### webpも画像

これでサーバーを再起動したら見事に.webpが画像として表示されました~。
これで軽量画像ライフが送れます。

chrome以外では表示できないらしいけどねっ。