python制作电子签名

news/2024/11/17 0:30:00/

1、引言

     毕业的文件因为疫情影响,很多签名要使用电子签名,众所周知,电子签名可以使用Photoshop制作,但是Photoshop安装过程复杂,占内存,杀鸡焉用牛刀!网上提供的在线转换也要注意安全性!因此我用python写了制作电子签名的方法。

2、代码

      不废话,直接上代码。

# coding: utf-8
# Author: An Chaofrom PIL import Image
import numpy as np
import argparse
import osdef read_img(img_path):'''读取图片,并将其转化为包含alpha通道的“RGBA”格式图片。img_path:图片路径'''image=Image.open(img_path)image = image.convert('RGBA')size = image.sizeimage = np.array(image)return size, imagedef 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] = 0else:image[i][j][0],image[i][j][1],image[i][j][2] = 0,0,0points.append((i,j)) return points, imagedef clip_image(points, image, save_path, offset=5):'''找到签名区域,返回电子签名。point:签名像素点位置列表image:处理过的签名图片offset:位置修正save_path:电子签名保存位置'''points = np.array(points).reshape((-1, 2))min_value = np.min(points,axis=0)x1,y1 = min_value[0]-offset,min_value[1]-offsetmax_value = np.max(points,axis=0)x2,y2 = max_value[0]+offset,max_value[1]+offsetsign_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_pathoffset = arg.offsetif 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"%isize,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_givesave_path = "ele_sign.png"size,image = read_img(img_path)points, image = get_elesign(size,image)clip_image(points, image, save_path, offset)

      代码非常简单,我也做了注释。

3、执行

      我加了两个终端参数,--image_path和--offset,是用来传入文件路径,这里的路径可以是图片文件,也可以是目录。如果是目录则会遍历目录中的图片文件,进行批量制作电子签名。--offset是签名位置修正,默认是5。

终端python环境执行:python make_ele_sign.py --image_path 图片或者目录路径

4、效果

注意:拍摄的签名需要写在白纸上,且背景尽量不要其他噪声,如果拍摄的图片质量不好,得到的电子签名可以手动修剪图片。

     


http://www.ppmy.cn/news/698710.html

相关文章

制作电子签名

每天一个PS/PR小技巧(原理实践) 每天一个PS/PR小技巧(原理实践)_Dezeming的博客-CSDN博客PS是由Adobe Systems开发和发行的图像处理软件。本文的特色在于快速上手和制作一些生活中会常用的功能,并且解释这些功能的具体…

word制作电子签名

插入自己手写签名的图片 双击图片点击环绕文字,选择衬于文字下方 选择重新着色,选择黑白 修改大小移动到需要的位置

使用Word制作签名电子版

1.在word中插入签名图片,将格式设置为【浮于文字上方】 2.选中图片,点击【图片格式】➡【颜色】➡【重新着色】➡【黑白50%】或者(【黑白25%】),然后【设置透明色】 成功! 如果需要放在其它颜色的图片…

电子签名如何制作——word

仅作为记录。 将写在纸上的图片,插入word,之后: 参考 传送门 20230518 今天发现,word 2019的图片格式的界面修改了,此时电子签的黑白颜色转化在:

PS笔记1_如何制作电子签名

本文目录 前言Step 1 在纸上手写签名,手机拍照传到电脑Step 2 把照片拖进PS,色阶调整把背景变纯白Step 3 利用色彩范围建立选取,再反选选区删除背景,将背景变为透明Step 4 对文字部分进行加黑处理Step 5 裁剪合适的尺寸&#xff0…

怎么制作合法有效的电子签名?

电子签名大致可以分两种:有法律效力的和无法律效力的。 举例:通过手写签名在纸上,然后利用手机等电子设备制作成照片,然后掏空纸质底色,形成只有签字文字部分的图片,进而使用到电子文档中,这样…

Elasticsearch 分词器切词器分析器

normalization : 文档规范化 先切词,然后规范化. 规范化要规范哪些内容? 大小写; 标点符号; 时态; 复数; 规范化主要是为了匹配更精准 character filter : 字符过滤器. 标点符号 分词之前的预处理,过滤无用字符 HTML Strip Character Filter :htm…

微信小程序学习记录2 案例分享<智能家居UI>

效果 思路 页面分为4块 前三块 采用同样的class 替换三张矢量图 绑定三个单片机返回的JSON值 最后一块又分为左右两部分 左边部分 采用switch组件 绑定三个事件 右边部分则是普通的文字