def from_array(cls, array, xalign=0.5, yalign=0.5, padding=0, bg=0):
"""Create an image from an array of images."""
if not non_string_iterable(xalign): xalign = [xalign] * max(len(r) for r in array)
if not non_string_iterable(yalign): yalign = [yalign] * len(array)
align = [[Alignment((xalign[c], yalign[r])) for c,_ in enumerate(row)] for r,row in enumerate(array)]
padding = Padding(padding)
heights = [max(img.height if img is not None else 0 for img in row) + padding.y for row in array]
widths = [max(img.width if img is not None else 0 for img in column) + padding.x for column in zip_longest(*array)]
aimg = Image.new("RGBA", (sum(widths), sum(heights)), bg)
for r,row in enumerate(array):
for c,img in enumerate(row):
if img is None: continue
x = sum(widths[0:c]) + padding.l + int(align[r][c].x * (widths[c] - (img.width + padding.x)))
y = sum(heights[0:r]) + padding.u + int(align[r][c].y * (heights[r] - (img.height + padding.y)))
aimg.overlay(img, (x,y))
return aimg
评论列表
文章目录