1. 程式人生 > >自動打碼指令碼

自動打碼指令碼

根據位置,自動打碼

# 注意!需使用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