wxPythonとPILを使って縮小した画像を綺麗に表示
最初にwxImage(wxPythonのwx.Image)を使って画像を縮小したんだが、どうも画質が悪い(ギザギザ)。
アンチエイリアス機能がなく、ぼかしを入れても所詮は気休め。
PILならアンチエイリアスを指定できるので、PILで画像を縮小させてからwx.image.ConvertToBitmap()に画像データを渡せばいいんじゃないの。
というわけで。
# PILで画像を読み込む image_pil = Image.open(image_path) image_pil.thumbnail((640,480), Image.ANTIALIAS) # wxPythonに縮小した画像を渡す image_wx = wx.EmptyImage(image_pil.size[0],image_pil.size[1]) image_wx.SetData(image_pil.convert('RGB').tostring()) wx.StaticBitmap(root, -1, image_wx.ConvertToBitmap(), (0,0), (640,480))
PILのthumbnailは比率を維持したまま変換できるので大変楽です。Image.ANTIALIASが肝心のアンチエイリアス指定。
wxPythonに縮小後の画像データを渡したら、あとはwx.StaticBitmapでrootフレームに表示します。
違いがはっきり分かるくらい、アンチエイリアスの有無で随分変わる。