【发布时间】:2021-08-16 15:38:56
【问题描述】:
我正忙着写一些东西来操作图像并将其他图像粘贴到它上面。
我正在尝试将背景和狗的帽子更改为各种其他的,并输出带有随机生成图像的多个文件。输入图像来自文件夹(backgrounds 和 hats)。当我们拍照并将它们复制到名为 background 的文件夹中时,我希望能够通过从 backgrounds 文件夹中选择一个随机图像来运行我的 Python 脚本来更改狗的背景。我希望能够对hats 文件夹中的图像执行相同的操作。随着时间的推移会添加更多文件夹,但这是另一天的问题。
到目前为止,我可以将项目粘贴到主图像上。我在文件夹中有多个 PNG 文件,我得到了三个图像,但所有三个图像都是相同的。我的代码似乎只加载了一个背景和一顶帽子。
请帮助我将两个文件夹中的随机图像粘贴到我的狗的主图像上。狗保持静止,但背景和帽子会改变。选项应该与组合允许的一样多。因此,三个具有三个选项的文件夹将有很多组合选项。我已将限制设置为三个,但每次图像应呈现不同的组合。
到目前为止我的代码:
import glob
from PIL import Image
def main():
q = 0
hat_image = glob.glob("hats/*.png")
for image in hat_image:
with open(image, 'rb') as file:
hat = Image.open(file)
bg_image = glob.glob("backgrounds/*.png")
for image in bg_image:
with open(image, 'rb') as file:
bg = Image.open(file)
try:
while q < 3:
img = Image.open("base.png")
img.paste(hat, (276, 176), hat)
# mouth = Image.open("./mouth/mouth1.png")
img.paste(bg, (226,476), bg)
img.save("final{}.png".format(q), "PNG")
q += 1
except IOError:
pass
if __name__ == "__main__":
main()
【问题讨论】:
-
请提供真正最小的minimal reproducible example。
-
stackoverflow.com/questions/306400/… 如何从列表中随机选择一个项目? : 示例添加导入随机,删除 for 循环,使用 open(random.choice(hat_image), 'rb') 作为文件:使用 open(random.choice(bg_image), 'rb') 作为文件
-
我会尝试提供一个真正最小的例子。
标签: python image python-imaging-library