3

我正在尝试使用 python Wand 调整图像大小,保留纵横比并用透明度填充剩余位置。例如,我想在保持纵横比的同时调整一个大矩形的大小以适应 100x100 图像,但我想将图像返回为 100x100,并在间隙中填充透明度。这可以使用魔杖吗?

我测试了 img.resize() 和 img.transform() ,它似乎只保留了纵横比而不是请求的图像大小。

如果 Wand 无法做到这一点,还有其他图书馆可以做到吗?

谢谢您的帮助!

4

1 回答 1

5

我的解决方案是创建一个空白的外部图像来放置转换后的图像。这会产生预期的宽度和高度,同时在保留纵横比的范围内拟合图像。

def resizeImg(sourceFile, destFile, width, height):                                                                                                                                                                                                                                       
  with Image(width=width, height=height) as outerImg:                                                                                                                                                                                                                                     
    with Image(filename=sourceFile) as img:                                                                                                                                                                                                                                               
      img.transform(resize="%dx%d>" % (width, height))                                                                                                                                                                                                                                    
      outerImg.format = img.format.lower()                                                                                                                                                                                                                                                
      outerImg.composite(img, left=(width - img.width) / 2, top=(height - img.height) / 2)                                                                                                                                                                                                
      outerImg.save(filename=destFile)
于 2014-08-22T16:56:19.797 回答