【发布时间】:2016-05-26 04:17:09
【问题描述】:
我。是。卡住。
我已经为此工作了一个多星期,但我似乎无法让我的代码正确运行。作为一个整体,我对 PIL 和 Python 相当陌生。我正在尝试制作一些图片的 2x3 拼贴。我在下面列出了我的代码。我试图让我的照片在新创建的拼贴中没有任何访问黑色空间的情况下适合,但是当我运行我的代码时,我只能将 2 张图片放入拼贴中,而不是我想要的 6 张。任何的意见都将会有帮助。
*代码已编辑
from PIL import Image
im= Image.open('Tulips.jpg')
out=im.convert("RGB", (
0.412453, 0.357580, 0.180423, 0,
0.212671, 0.715160, 0.072169, 0,
0.019334, 0.119193, 0.950227, 0 ))
out.save("Image2" + ".jpg")
out2=im.convert("RGB", (
0.9756324, 0.154789, 0.180423, 0,
0.212671, 0.715160, 0.254783, 0,
0.123456, 0.119193, 0.950227, 0 ))
out2.save("Image3" + ".jpg")
out3= im.convert("1")
out3.save("Image4"+".jpg")
out4=im.convert("RGB", (
0.986542, 0.154789, 0.756231, 0,
0.212671, 0.715160, 0.254783, 0,
0.123456, 0.119193, 0.112348, 0 ))
out4.save("Image5" + ".jpg")
out5=Image.blend(im, out4, 0.5)
out5.save("Image6" + ".jpg")
listofimages=['Tulips.jpg', 'Image2.jpg', 'Image3.jpg', 'Image4.jpg', 'Image5.jpg', 'Image6.jpg']
def create_collage(width, height, listofimages):
Picturewidth=width//3
Pictureheight=height//2
size=Picturewidth, Pictureheight
new_im=Image.new('RGB', (450, 300))
for p in listofimages:
Image.open(p)
for col in range(0,width):
for row in range(0, height):
image=Image.eval(p, lambda x: x+(col+row)/30)
new_im.paste(p, (col,row))
new_im.save("Collage"+".jpg")
create_collage(450,300,listofimages)
【问题讨论】:
-
我。看。错误。首先,# 是注释符号,而不是 //。其次,循环是错误的:i 应该在 (0,a) 范围内,而 j 在 (0,b) 范围内。虽然没有检查其余部分
-
@HennadiiMadan 我用循环建议更新了我的 shell 上的代码,现在它只返回新创建图像最左侧的一张照片。我也一直在想任何新的方法来编写代码,但我仍然不知所措。还有什么建议吗?我想不通
-
我看到的第一个问题是
create_collage没有被调用。a和b代表什么?我建议使用正确的变量名而不是单个字母。 -
@Nikki 请发布包含 Hugo 建议的更新代码
-
@Hugo 我采纳了你的建议并编辑了我的代码。
标签: python image python-imaging-library copy-paste