在Python PIL中覆盖图像上的边框

我有一个图库应用程序,用户可以在其中上传照片,而我的代码则为该照片添加边框,在边框上写一些照片属性并将其存储。


image2 = Image.open('media/' + str(image.file))

width, height = image2.size;

image2 = ImageOps.expand(image2, border=(int(width/25),int(height/20),int(width/25),int(height/10)), fill='rgb(0,0,0)')

(请注意,这里的底部边框比顶部的边框长,因为我在底部的边框上写属性。)现在,我为上载的图像构建一个编辑功能,用户可以在其中更改上载的图像的属性。但是必须将已经写在边框上的属性覆盖掉。


因此,在这里,我的方法是在底边框上放置一个黑色补丁,并重写新属性,而无需更改顶边框和侧边框,也不更改宽高比。所有这些都必须使用PIL完成。


问题是如何在底部边框上放置一个黑框?


我尝试了这里提到的ImageOps.fit()https://pillow.readthedocs.io/en/3.3.x/reference/ImageOps.html#PIL.ImageOps.fit,但是长宽比似乎不正确,并且我想在黑色边框上覆盖一个黑框,而不要裁剪照片。


千巷猫影
浏览 258回答 2
2回答

慕仙森

在我看来,似乎最简单的解决方案是使用几个循环快速绘制所需区域中的黑色像素,然后 Image.putpixelfrom PIL import Imageimg = Image.open('red.png')for x in range(img.width):    for y in range(img.height - 40, img.height):        img.putpixel((x, y), (0, 0, 0))img.save('red2.png')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python