2010-11-30 20 views
0

希望よりも小さい画像のサイズを変更すると、画像のサイズが変更されないようにしたいのですが、代わりに中央に白い詰め物があります。これを行うにはPythonイメージリサイザーコードを変更するにはどうすればよいですか?

だから、50x50のアイコンがあるとします。しかし、私はそれを100x100にサイズ変更したい。私がこの関数に渡すと、中央にある同じアイコンを返すようにしたいと思います。両サイドに25ピクセルの白いパディングがあります。

もちろん、上記の例のような正方形だけではなく、任意の幅/高さの画像を扱うことができます。

私の現在のコードは以下の通りです。

なぜ私がやったのか分かりませんif height=None: height=width ...私はそれが前にそれをしたときに働いたと思う。

def create_thumbnail(f, width=200, height=None): 
    if height==None: height=width 
    im = Image.open(StringIO(f)) 
    imagex = int(im.size[0]) 
    imagey = int(im.size[1]) 
    if imagex < width or imagey < height: 
     return None 
    if im.mode not in ('L', 'RGB', 'RGBA'): 
     im = im.convert('RGB') 
    im.thumbnail((width, height), Image.ANTIALIAS) 
    thumbnail_file = StringIO() 
    im.save(thumbnail_file, 'JPEG') 
    thumbnail_file.seek(0) 
    return thumbnail_file 

このコードがわからない、それには多くのバグを有することができます。

答えて

3

1つのオプションは、空白の白いイメージを作成して、既存のイメージを中央に描画することです。

+1

入力画像が小さい場合は、Image.newで空白の画像を作成し、ペーストを使用して画像を空白の画像の中央に配置します –

関連する問題