2014-07-10 61 views
0

如何使用Python和魔方創建方形縮略圖?我試圖從任何尺寸的源圖像製作正方形縮略圖。重要的是,縮略圖具有與原始相同的縱橫比,裁剪是可以的,並且它應該填充縮略圖的空位。使用Python + MagickWand創建方形縮略圖

回答

2

以下crop_center()函數使給定的圖像爲正方形。

from __future__ import division 

from wand.image import Image 


def crop_center(image): 
    dst_landscape = 1 > image.width/image.height 
    wh = image.width if dst_landscape else image.height 
    image.crop(
     left=int((image.width - wh)/2), 
     top=int((image.height - wh)/2), 
     width=int(wh), 
     height=int(wh) 
    ) 

首先你需要將圖像做成方形,然後你可以將resize()的方形變小。

0
  • 沒有裁剪。
  • 用顏色填充空白區域(在本例中爲白色)。
  • 保持縱橫比
from math import ceil 
from wand.image import Color 


def square_image(img): 
    width = float(img.width) 
    height = float(img.height) 
    if width == height: 
     return img 
    border_height = 0 
    border_width = 0 
    if width > height: 
     crop_size = int(width) 
     border_height = int(ceil((width - height)/2)) 
    else: 
     crop_size = int(height) 
     border_width = int(ceil((height - width)/2)) 
    img.border(color=Color('white'), height=border_height, width=border_width) 
    img.crop(top=0, left=0, width=crop_size, height=crop_size) 
    return img