日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

在我們工作和生活中,你使用過電子簽名嗎?

眾所周知,電子簽名可以使用Photoshop制作,但是Photoshop安裝過程復雜,占內存,殺雞焉用牛刀?而且網上提供的在線轉換也要注意安全性!

人生苦短,我用Python,畢竟它除了生孩子無所不會!搞定電子簽名手到擒來的事情!往下看

代碼

首先需要導入Python程序所依賴的包,Image用來讀取圖片,numpy用來對圖片數組進行計算操作,argparse用來獲取命令行傳入參數,os用來操作路徑。

from PIL import Image
import numpy as np
import argparse
import os

緊接著定義讀取圖片函數,并將其轉化為包含alpha通道的“RGBA”格式圖片。

def read_img(img_path):
    image=Image.open(img_path)
    image = image.convert('RGBA')
    size = image.size
    image = np.array(image)
    return size, image

之后便是定義生成電子簽名函數,簽名是黑區域,像素值接近0。因此將RGB三個通道像素值大于100的設置為透明,并返回簽名位置區域坐標點和處理過后的圖片。

def get_elesign(size,image):
    '''
    簽名是黑色區域,像素值接近0。
    size:輸入圖片尺寸
    image:numpy array格式的圖像
    '''
    points = []
    for j in range(size[0]):
        for i in range(size[1]):
            if image[i][j][0]>100 and image[i][j][1]>100 and image[i][j][2]>100:
                image[i][j][3] = 0
            else:
                image[i][j][0],image[i][j][1],image[i][j][2] = 0,0,0
                points.Append((i,j)) 
    return points, image

定義裁剪函數,找到簽名區域,返回電子簽名。

def clip_image(points, image, save_path, offset=5):
    points = np.array(points).reshape((-1, 2))
    min_value = np.min(points,axis=0)
    x1,y1 = min_value[0]-offset,min_value[1]-offset
    max_value = np.max(points,axis=0)
    x2,y2 = max_value[0]+offset,max_value[1]+offset
    sign_area = image[x1:x2,y1:y2]
    sign_area = Image.fromarray(sign_area)
    sign_area.save(save_path)

最后實例化。大功告成!

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="制作電子簽名!")
    parser.add_argument("--image_path",type=str, help = "簽名圖片位置, dir or file")
    parser.add_argument("--offset",type=int, default=5, help = "簽名向外擴張范圍,默認為5個像素")
    arg = parser.parse_args()
    user_give = arg.image_path
    offset = arg.offset
    if os.path.isdir(user_give):
        imgs_name = os.listdir(user_give)
        for i,name in enumerate(imgs_name):
            if os.path.splitext(name)[-1] in [".jpeg",".JPG",".PNG",".jpg",".png"]:
                basename = os.path.splitext(name)[0]
                img_path = os.path.join(user_give,name)
                save_path = "ele_sign_"+basename+"_%d.png"%i
                size,image = read_img(img_path)
                points, image = get_elesign(size,image)
                clip_image(points, image,  save_path, offset)
    elif os.path.isfile:
        img_path = user_give
        save_path = "ele_sign.png"
        size,image = read_img(img_path)
        points, image = get_elesign(size,image)
        clip_image(points, image, save_path, offset)

執行

為了方便執行,我加了兩個終端參數:

--image_path
--offset

前者是用來傳入文件路徑,這里的路徑可以是圖片文件,也可以是目錄。如果是目錄則會遍歷目錄中的圖片文件,進行批量制作電子簽名。后者為簽名位置修正,默認是5。終端python環境執行命令:

python make_ele_sign.py --image_path 圖片或者目錄路徑

簡單粗暴!

效果

最后看看效果!分分鐘便擁有了自己帥氣的電子簽名!這樣騷包的Python,你愛不愛?

Python騷操作!你還在用PS制作電子簽名嗎?

 

PS:拍攝的簽名需要寫在白紙上,且背景盡量不要其他噪聲,如果拍攝的圖片質量不好,使用該方法得到的電子簽名可以手動修剪圖片。

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定