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

前言

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

众所周知,电子签名可以使用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」后台回复关键词「电子签名」即可获取!

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

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

  1. Python骚操作—自动刷抖音

    python骚操作之电脑自动刷抖音 上篇文章发完之后,有朋友在后台留言给我,说手机自动化控制很炫酷,但是appium的安装和使用很复杂,想让我写一篇详细文章介绍一下,下面我就以自动刷抖音为例简单介绍一 ...

  2. Python 骚操作!如何让自己在斗图中立于不败之地?

    点击⬆️"小詹学Python",选择"星标公众号" 福利干货,第一时间送达! 本文授权转载自AirPython,禁二次转载 阅读文本大概需要 6 分钟. 1 目 ...

  3. Python骚操作:Python控制Excel实现自动化办公!

    Python骚操作:Python控制Excel实现自动化办公! 1.安装 Python骚操作:Python控制Excel实现自动化办公! 2.操作一个简单的Excel文档 操作注释及代码: Pytho ...

  4. Python骚操作,实现驾考自动答题,直接满分

    Python骚操作来了~ 用Python来实现科目一/四自动答题,100分不要太简单! 最初是表弟最近想买车,但是驾照都没有,买什么车,只能先考驾照~ 看他在网页上练习题目慢吞吞的,我就看不下去了,直 ...

  5. Python 骚操作,微信远程控制电脑

    **今天带给大家一个非常有意思的 python 程序,基于 itchat 实现微信控制电脑.你可以通过在微信发送命令,来拍摄当前电脑的使用者,然后图片会发送到你的微信上.甚至你可以发送命令来远程关闭电 ...

  6. 【Python】这些Python骚操作,你值得拥有

    Python 我用的比较多一点,对一些小玩意有些许了解.我不大清楚骚操作怎么定义,只好说说我觉得 Python 和其它语言(比如 C 和 JAVA 等)设定比较奇特的地方. 看了后,说不定你马上就有玩 ...

  7. Python骚操作-微信远程控制电脑

    Python+微信远程控制电脑 今天带给大家一个非常有意思的 python 程序,基于 itchat 实现微信控制电脑.你可以通过在微信发送命令,来拍摄当前电脑的使用者,然后图片会发送到你的微信上.甚 ...

  8. Python骚操作之微信远程控制电脑

    前言 好几天没给大家写文章了,原因是这几天比较忙,再又马上开学了,所以有些事情有些力不从心,不过之后,我会调整好时间,尽量每周给大家带来3-4篇的文章,接下来的一段时间,文章内容会有一些跟Python ...

  9. 10 个让你相见恨晚的 Python 骚操作

    众所周知,Python 以语法简洁著称,同样实现一个功能,Java 可能要十来行,Python 一行就可以搞定. Python 的代码之所以这么优雅,完全归功于其独有的特性,只要你掌握了这些特性,同样 ...

最新文章

  1. 分类模型与排序模型在推荐系统中的异同分析
  2. css 图片剪裁居中
  3. 创建一个Business partner reference extension field
  4. 【spring容器启动】之bean的实例化和初始化(文末附:spring循环依赖原理)
  5. 专题导读:空天大数据
  6. java8泛型包括_JAVA8 获取泛型类型问题
  7. 花呗借呗还不上会打通讯录电话号码吗?
  8. 开始我们的Snippets!
  9. 黑盒测试9种常用方法
  10. 【协议分析】WAP1.x协议栈浅析-WSP协议
  11. 使用js获取移动端设备屏幕高度和宽度尺寸的方法
  12. 别错过 孩子学19种才艺的最佳年龄
  13. 市面上U盘便宜种类多 如何鉴别便宜U盘好坏呢
  14. 4 数据分析-案例:亚洲国家人口数据计算
  15. 如何删除字符串中的数字
  16. 网约车2.0时代,首汽约车让AI实时“听懂”打车服务
  17. 手撸架构,Spring 面试63问
  18. 【数据分析】认识Pandas:DataFrame和Series结构、属性
  19. Java实现纸牌游戏
  20. 【备注】【C42】《编写高质量代码:改善Python程序的91个建议》PDF

热门文章

  1. 详谈PHP垃圾回收机制
  2. 程序员的10条黄金法则,你懂?
  3. PHP的异常处理异常捕获错误类
  4. java如何把string转化E_java将string转为代码执行
  5. php 表单跳转,html - 思路问题:php表单跳转
  6. 水平仪算公式计算机,水平仪的使用方法和计算
  7. 概要设计实例_尽可能通用的运维CMDB的设计与实践
  8. java直接对list使用sql语句_Java和SQL语句阶段考试错题集
  9. c++指针引用导出文件
  10. 【Apache】 alias+proxy 将资源路径指向某个本地目录