为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千巷猫影 2021-05-03 13:09:07
我有一个图库应用程序,用户可以在其中上传照片,而我的代码则为该照片添加边框,在边框上写一些照片属性并将其存储。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,但是长宽比似乎不正确,并且我想在黑色边框上覆盖一个黑框,而不要裁剪照片。
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

在我看来,似乎最简单的解决方案是使用几个循环快速绘制所需区域中的黑色像素,然后 Image.putpixel

//img1.sycdn.imooc.com//609a46ce0001c03502160180.jpg

from PIL import Image


img = 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')

//img1.sycdn.imooc.com//609a46dc000167f502190179.jpg

查看完整回答
反对 回复 2021-05-11
  • 2 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信