2010-08-02 24 views

回答

3

看看PyMagick,ImageMagick庫的python接口。調整圖像大小非常簡單,保留比例,同時限制最長的一面。

編輯:當我說得相當簡單的時候,我的意思是說你可以根據每一邊最長的可接受值來描述你的調整大小,ImageMagick會自動保留比例。

+0

PyMagick最後更新於2002年,所有報告(我沒有嘗試自己構建它)被破壞。我期望你的意思是Python圖像庫http://www.pythonware.com/products/pil/ – msw 2010-08-02 21:15:37

+0

PythonMagick就是我的意思,但這似乎也已經不再流通。很奇怪。看起來@msw是正確的,PIL是要走的路。 – 2010-08-02 21:31:43

4

要保持比例相同,您需要將寬度和高度乘以相同的比例因子。計算每個獨立適合你的空間,然後選擇兩個中最小的。你說你不關心身高,但是你可能想要爲它設置一個界限,以防有人給你提供一個非常瘦的圖像。

在下面的代碼中,我添加了兩個額外的約束條件:縮略圖的寬度或高度總是> = 1,縮放因子將始終爲< = 1(這樣縮略圖不會更大比原來的)。

scale_x = max_width/image_width 
scale_y = max_height/image_height 
scale = min(scale_x, scale_y, 1) 
thumb_width = max(round(image_width * scale), 1) 
thumb_height = max(round(image_height * scale), 1) 
1

支持使用PIL的建議。然而,計算實際上是要簡單得多:

from PIL import Image as PILImage 

imageObj = PILImage.open(image_filename,'r') 
iwidth, iheight = imageObj.size # pixels 
size_proportion = iheight/iwidth # make sure your "limiter" is the denominator 
newheight = size_proportion * 200 
# resize the image to (newheight, 200) and save it 

或者,只是叫出來的子進程,並使用ImageMagic或GraphicsMagic(我用後者)這些庫給你很好的縮放算法,都寫在較低層次的語言,並非常優化。 IM和GM所做的一件好事是批量處理圖像。另一個好處是,在某些模式下,您不需要爲GraphicsMagic提供所需的尺寸,只需提供最大值,並且可以根據超出給定最大值的任何約束來縮小圖片大小。一探究竟。

相關問題