Python去除水印将不同大小图片的右下角部分进行马赛克处理

2023年9月16日 08:40 ry 667

最近客户遇到个需求,需要将今日头条的图片下载下来,下载后发现图片带水印,如图所示微头条里面的图片

要将右下角下面的图片模糊化(马赛克处理)。由于里面的图片大小不一,如果使用固定像素划分区域的话会产生很大误差,现在要实现一个所有图片同用的方法,仔细观察今日头条的所有图片都有一个共同点,那就是水印都在图片的右下角处,那就好办了 ,我直接设置比例不就行了吗,进行微调下就可以通用了。经过多方测试,今日头条通用的去水印的比例如下,看完整代码

from PIL import Image, ImageFilter
import requests
from io import BytesIO
def apply_mosaic(image_url,output_image, rectangle_width=0.22563, rectangle_height=0.0615, bottom_distance=0.015864, right_distance=0.0135379):
    # 打开原始图片
    image_data = requests.get(image_url).content
    image = Image.open(BytesIO(image_data))

    # 计算矩形区域位置
    x1 = image.width - int(right_distance*image.width) - int(rectangle_width*image.width)
    y1 = image.height - int(bottom_distance*image.height) - int(rectangle_height*image.height)
    x2 = image.width - int(right_distance*image.width)
    y2 = image.height - int(bottom_distance*image.height)

    # 获取矩形区域内的像素值
    region = image.crop((x1, y1, x2, y2))
    try:
        # 缩放矩形区域为马赛克效果

        region = region.filter(ImageFilter.GaussianBlur(radius=20))

        # 将马赛克矩形区域粘贴回原图
        image.paste(region, (x1, y1, x2, y2))

        # 保存处理后的图片
        image.save(output_image,'PNG')
    except:
        region = region.convert('RGB')
        region = region.filter(ImageFilter.GaussianBlur(radius=20))
        # 将马赛克矩形区域粘贴回原图
        image.paste(region, (x1, y1, x2, y2))

        # 保存处理后的图片
        image.save(output_image, 'PNG')

output_image = r"C:\Users\14499\Desktop\350监控\output.png"  # 输出图片路径


apply_mosaic('https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/30ad130822c84878974bb23c1b6f23db~tplv-tt-origin-asy2:5aS05p2hQOWThOWKqOS4gOWPsg==.image?_iz=58558&from=article.pc_detail&x-expires=1695389812&x-signature=jL7NB%2BXI8l5av7PdrYjlWA5kMLg%3D', output_image)

先看下这张图片的效果,

水印去除成功!再换成别的大小的图片也去除成功。

如果上述代码帮助您很多,可以打赏下以减少服务器的开支吗,万分感谢!

欢迎发表评论~

点击此处登录后即可评论


评论列表
2023年11月16日 13:22 ry: 回复
需要源码或者软件定制,网站开发的可以联系我:qq:1449917271 微信:liuyoudyping


赣ICP备2021001574号-1

赣公网安备 36092402000079号