このトリミングアルゴリズムのよりエレガントな言い換えは何ですか? (Pythonで)

StackOverflow https://stackoverflow.com/questions/709388

質問

私は、画像の中心を示し、二次画像を得るように、私のDjangoアプリケーションでサムネイル画像をトリミングしたいです。これは非常に難しいことではありません、私は同意するものとします。

私はすでに、まさにこれを実行するいくつかのコードを書かれているが、何とかそれは、ある...優雅さを欠いています。私は、私が思うに、コードゴルフをプレーしたくないが、これより短く、より神託を表現する方法がなければならない。

x = y = 200 # intended size
image = Image.open(filename)
width = image.size[0]
height = image.size[1]
if (width > height):
    crop_box = ( ((width - height)/2), 0, ((width - height)/2)+height, height )
    image = image.crop(crop_box)
elif (height > width):
    crop_box = ( 0, ((height - width)/2), width, ((height - width)/2)+width )
    image = image.crop(crop_box)
image.thumbnail([x, y], Image.ANTIALIAS)

あなたはSO、任意のアイデアを持っていますか?

編集のXについて説明し、Y

役に立ちましたか?

解決

私はこれが何をすべきだと思います。

size = min(image.Size)

originX = image.Size[0] / 2 - size / 2
originY = image.Size[1] / 2 - size / 2

cropBox = (originX, originY, originX + size, originY + size)

他のヒント

PILでfit()機能 ImageOps のモジュールは、何ん欲しいます:

ImageOps.fit(image, (min(*image.size),) * 2, Image.ANTIALIAS, 0, (.5, .5))
width, height = image.size
if width > height:
    crop_box = # something 1
else:
    crop_box = # something 2
image = image.crop(crop_box)
image.thumbnail([x, x], Image.ANTIALIAS)   # explicitly show "square" thumbnail

私はJEPG画像の内容を分析したいです。私は、x 261 251を言うのjpeg imafeを取り、96×87は、このプログラムは次のようにtは画像をrezieするためのプロンプトで、インテリジェントなトリミングアルゴリズムを記述することを行うことができると言うためにそれをトリミングするアルゴリズムを通してそれを渡したい。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top