2019年3月18日月曜日

PyhtonでWindowsのアイコンファイルをつくる

Windowsで使われるアイコン画像のフォーマットICOには異なるサイズの複数の画像を格納できる(WikipediaのICO)。通常アイコン画像をつくるには専用のソフトウェアが必要だけど、Pythonの画像処理用ライブラリのPillowでもつくることができる。


環境


Windows10のWSL(Ubuntu 18.04)。



Pillowのインストール


画像処理用ライブラリのPillowはpipでインストールできる。




Pillowでアイコン画像を作成


作り方は簡単で、用意した画像をPillowで読み込んで、それをICOフォーマットで保存するだけ。デフォルトでは(16, 16)、(24, 24)、(32, 32)、(48, 48)、(64, 64)、(128, 128)、(256, 256)のサイズの画像のうち、オリジナル画像サイズを超えないサイズの画像が含まれるicoファイルが作成される。

今回は、ICOOON MONOからダウンロードしたりんごのフリーイラストのPNGをアイコンファイルに変換する。マイクロソフトのIconsによると、アプリ用のアイコンサイズは16x16、24x24、32x32、48x48、64x64の5サイズなので、以下の64x64の画像をダウンロードした。



画像ファイルをICOフォーマットに変換するコードは以下の通り。引数として画像ファイル名を指定する。

import sys
import os
from PIL import Image

def iconmaker():
    argvs = sys.argv

    if len(argvs) != 2:
        print('Usage: python3 {} [Image file]'.format(argvs[0]))
        sys.exit();

    ifilename = argvs[1]

    basename = os.path.splitext(ifilename)[0]

    try:
        img = Image.open(ifilename)

        # 拡張子としてicoを指定するとicoフォーマットになる
        img.save(basename + '.ico')
    except IOError as e:
        print(e)

if __name__ == '__main__':
    iconmaker()


作成したICOファイルはIrfanView+Pluginで確認できる。IrfanViewのメニューのView > Multipage images > Show page thumbnailsで、ICOファイルに含まれる複数サイズを同時に表示可能。

0 件のコメント:

コメントを投稿