我想让我的图像成为正方形而不影响它们的宽高比,所以我需要填充画布大小,例如使高度与宽度一样大,然后我可以重新缩放图像。我没有看到这样做的聪明方法。我查看了文档,但没有看到任何内容:http://docs.wand-py.org/
似乎调整大小或庄稼不会这样做。我试过了:
img.crop(0, 0, width=dim, height=dim)
我很欣赏这个例程可能取决于背景,但如果我为了简单而假设图像都具有白色背景(稍后我可能想要采样并添加背景类型)。
答案 0 :(得分:2)
如果您从命令行开始使用如下图像:
convert -size 200x120 xc:red a.png
并将其调整为100x100,如下所示:
convert a.png -resize 100x100 b.png
你会得到一张100x60的图像,因为ImageMagick希望保持这个比例。如果您希望将图像填充到正方形,则需要使用-extent
这样的(我已将背景设为黄色以便您可以看到它):
convert a.png -resize 100x100 -background yellow -gravity center -extent 100x100 b.png
我没有在Python Wand文档中看到任何关于-extent
的提及,所以我认为它不存在。因此,我想你可能需要制作一个新的第二个方形图像,并将调整后的图像合成到它上面。除非其他人知道更好......
答案 1 :(得分:1)
Wand提供变换,可以在保持纵横比的同时将图像缩放到所需的大小。你可以用透明背景填充它,使其在以后完全变成正方形。
def adjust_ratio(img, w_dst, h_dst):
img.transform(resize="{0}x{1}".format(w_dst,h_dst))
w_bor = (w_dst - self.img.width)/2
h_bor = (h_dst - self.img.height)/2
if w_bor>0:
img.border(color=Color('transparent'),width=w_bor,height=0)
else:
img.border(color=Color('transparent'),width=0,height=h_bor)
答案 2 :(得分:0)