folder-icon

Windows のフォルダアイコンのプレビューは 「folder.gif」 って名前のファイルがあればそれが使われます
普段はあんまり使わないですけど、マンガをスキャンしたフォルダなんかはトップ画像が表示されてると一覧で見たときに気持ち良いですよね

とは言ったものの、手動で作るのは結構めんどくさいです
自動でできるようにしたいのですけど、普段づかいの Paint.NET はバッチ処理機能がないみたい
Gimp はスクリプトがあるみたいなこと書いてたけど複雑でよくわかんない

スクリプト書くならプログラムでいいんじゃないかな
Python とかだとかんたんにできそうな気がする!
と、 Python で画像編集する方法を調べてみたら簡単にできました

import os, sys
from PIL import Image

max_width = 300
max_height = 300

for arg in sys.argv[1:]:
img = Image.open(arg).convert("RGBA")
img.thumbnail((max_width, max_height), Image.LANCZOS)

img.info.pop("background", None)
img.save(os.path.abspath(arg + "/../folder.gif"))

本当は正方形の画像を出力して、 CSS でいう cover と contain みたいなのを選択できるようにしたりするつもりでした
でもやってみたら縦横の最大の大きさだけ指定してあとはアスペクト比固定でも十分いい感じだったので単純にリサイズと GIF 変換だけになりました
これだけなら変換系フリーソフトでできたかも・・・?

作ってみて気づいたのは、画像処理って同じことしてても中のアルゴリズムが違うのか、 Paint.NET で作ったのより Python で作った画像のほうがきれいでした
GIF だと 256 色に減色される分、ほぼ変わらない JPG よりも違いがわかりやすいです
Python で作ったのは色の変わり目にあるつぶつぶというかギザギザ(ディザー?)が目立ってなくてなめらかな感じです
Paint.NET のほうが画像サイズは小さいですけど、数十 KB くらいのサイズなら画質がきれいなほうがいいので Python で作ったほうがいいことがわかりました