Python骚操作!你还在用PS制作电子签名吗?

news/2024/11/16 22:26:52/

????加星标,不迷路哦!

前言

在我们工作和生活中,你使用过电子签名吗?

众所周知,电子签名可以使用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.sizeimage = 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] = 0else:image[i][j][0],image[i][j][1],image[i][j][2] = 0,0,0points.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]-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)

执行

为了方便执行,我加了两个终端参数:

--image_path
--offset

前者是用来传入文件路径,这里的路径可以是图片文件,也可以是目录。如果是目录则会遍历目录中的图片文件,进行批量制作电子签名。后者为签名位置修正,默认是5。终端python环境执行命令:

python make_ele_sign.py --image_path 图片或者目录路径

简单粗暴!

效果

最后看看效果!分分钟便拥有了自己帅气的电子签名!这样骚包的Python,你爱不爱?

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

完整代码已经打包好,在公众号「小詹学Python」后台回复关键词「电子签名」即可获取!

最后,记得扫码????关注小詹的视频号「小詹同学」哦!一个有颜有料的美男子!


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

相关文章

使用 Inkscape 制作电子签名

1:首先安装 Inkscape 软件,https://inkscape.org/,就是下面这个 2:找一张白纸,写上自己的名字,如 3:打开 Inkscape,将刚刚的图片打开 4:选中打开的图像,右键“…

【小技巧】PhotoShop + lllustrator制作电子签名矢量图

前言 有时候我们需要制作电子签名并打印,但是往往直接将签名拍照并插入Word中再打印出来的效果很不好,这时就需要将签名转换成矢量图。 准备工具 手机扫描软件,如Scanner[IOS]PhotoShopAdobe lllustrator 教程步骤 首先将写在纸上的签名扫…

python给pdf放置签名图片_利用python制作电子签名

有时候我们需要在文档里粘上电子签名,通常使用photoshop制作,但是通常photoshop软件还需要下载、安装,对于不经常使用的人来说,单独装这个软件没啥必要。 因此我们可以利用python对签名的图片进行修改,得到电子签名。主…

怎么制作电子签名?

随着科技的进步,电子签名应用的领域更广泛,尤其是电子签名的法律效力问题上,通过技术手段实现签名和签署人身份对应,利用不可被更改的内容形式,保障签名的电子文件是原文,广泛应用于电子商务的场景。 电子签…

PS2020制作电子签名

文章目录 1. 找一张白纸,手写签名。(忽略我的丑字)2. 打开PS,打开该图片3. 依次点击图像-->调整-->色阶4. 依次点击选择-->色彩范围5. 依次点击编辑-->定义画笔预设 1. 找一张白纸,手写签名。(…

如何利用Photoshop制作电子签名

疫情期间经常用到电子签名,下面介绍一种用Photoshop制作手写签名的方法,类似方法,其他软件也可以尝试,如果在手机或者pad上真正手写保存,将更加流畅,此处为用鼠标书写。 1.打开任一版本的PS软件 2.新建一…

手写签名制作电子签名详细步骤

d怎么制作手写电子签名? - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/157419337https://zhuanlan.zhihu.com/p/157419337对于有时需要进行签名再进行扫描或者拍照回传的问题,通常如果只是电子版的文件,完全可以使用电子签名来进行解决。…

python制作电子签名

1、引言 毕业的文件因为疫情影响,很多签名要使用电子签名,众所周知,电子签名可以使用Photoshop制作,但是Photoshop安装过程复杂,占内存,杀鸡焉用牛刀!网上提供的在线转换也要注意安全性&#xf…