自动打码脚本

根据位置,自动打码
# 注意!需使用python3来运行当前代码, 需要安装requests库。
# coding:utf-8
"""
工作需要整理的打码代码,这里修改了一下,让其功能更强大一点。
"""
import numpy as np
from PIL import Image
import requests
from io import BytesIO


def mosaic_two_position(img):
    # 打开图片并转np.array.
    if isinstance(img, str):
        if img.startswith("http"):
            data = requests.get(img).content
            print(data)
            img = Image.open(BytesIO(data))
        else:
            img = Image.open(img)
    lottery = np.asarray(img)
    """
    既然要打码,我们肯定要划定区域,在哪里打码?打的码的块大小是多少,传出的图片在哪, 下面举一个例子,然后你可以在此基础上进行修改。
    y1, y2, x1, x2 很容易理解,x1,y1是要打码部分的左上角的x,y值, x2, y2是要打码部分的右下角的x,y值
    example:
    下面这个是一个图片,左上角是(0,0), 右下角是(4,4) 我们现在要截取(2, 2) 到 (4, 3)的图片,就是 y1, y2, x1, x2 = 2, 3, 2, 4
    
      (0, 0) ________________          
            |                |     --> x
            |                |    |
            |                |    V 
            |                |    y
            |                |
            |                |
            |________________|
    """
    y1, y2, x1, x2 = 136, 204, 16, 480
    pic_np = lottery[y1:y2, x1:x2]
    # pic_np就是截取出来的图片的np矩阵。
    # tab_size是打码的块的大小。
    tab_size = 10
    masaike_tab = pic_np[::tab_size, ::tab_size]  # masaike_tab就是打码后的那一块图片。

    # 这里拷贝一份原图,在拷贝的图片上进行打码操作。
    lottery_copy = lottery.copy()
    # 调用打码函数get_mosaic_pic来进行打码。
    get_mosaic_pic(masaike_tab, lottery_copy, [y1, x1], tab_size)
    # 这里把np.array转回img格式, 同时对图片进行保存(可以不保存),最后返回的img类型的图片格式。
    a = Image.fromarray(lottery_copy)
    a.save("2.png")
    return a


def get_mosaic_pic(masaike_pic, lottery_copy, lottery_point, extract_percent):
    # 需要的参数
    # masaike_pic:切割后的马赛克图片
    # lottery_copy:copy的原始图片
    # lottery_point:切割的图片的截取点
    # extract_precent: 抽取的比例
    black_h, black_w, _ = masaike_pic.shape
    for i in range(black_h):
        for j in range(black_w):
            lottery_copy[lottery_point[0] + i * extract_percent:
                         lottery_point[0] + (i+1) * extract_percent,
                         lottery_point[1] + j * extract_percent:
                         lottery_point[1] + (j+1) * extract_percent] = masaike_pic[i,j]
    return 0


if __name__ == "__main__":
    # 随便找了一个新闻的例子。
    img = "https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=2613110806,4008906767&fm=173&app=25&f=JPG?w=550&h=389&s=A704B04C4052BDCC0EA6949103001089"
    mosaic_two_position(img)

全部代码见 https://download.csdn.net/download/funnypython/10711445

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值