我这样制作个人电子签名:简化签字扫描流程,方便且清晰

为什么会有这篇文章

在日常办公中,报告需要签字是常见的需求。我们常常需要经历打印-签名-扫描的流程,然后再用软件将扫描后的签名和原报告的PDF进行拼接。这个过程不仅耗时,而且扫描后的文件质量和观感也无法达到理想的效果。

鉴于这样的困扰,我探索了一种实际操作并实际使用的方法,可以帮助我们制作并使用个人电子签名。此方法完全免费,并在本地完成,因此无需担心个人信息泄露的问题。

下面是我制作和使用自己的电子签名的过程。

自制电子签名步骤

在白纸上手写签名

首先,在一张干净的白纸上用钢笔或者墨水笔手写你的签名。为了使签名更加鲜明清晰,这里建议用稍微粗一些的笔尖。

我这里以"周树人"为例,由于现在手头的笔质量一般,所以写出来的效果不是特别好。我写自己签名的时候用水笔写的,效果更好。

拍照截取

签名完成后,用手机或者扫描仪扫描你的签名。这里要保证整个拍摄过程中,光线充足且尽量避免阴影的影响。签名需要占据图片的主体部分。 我这里灯光不是太均匀,但整体还可以。

去除白色背景,使签名透明

将签名的图片导入到电脑上后,我们使用Python脚本进行处理,去除白色背景,使得签名部分透明。这需要借助图像处理库Pillow,同时,我使用tk构建了一个GUI界面,使得整个操作更加方便直观。为了不影响阅读,我把代码放在文末,供有一定基础的朋友使用,如果你没有基础也没关系,我会提供打包后可以直接运行的程序。 界面是这样: 使用也很简单: 运行程序后,点击"选择图片按钮",选中你刚才截取的签名图片,然后点击"开始处理"按钮,就把处理好的签名保存下来了。

如果效果不好可以调整界面上的最小值,对于白底黑字,如果处理后笔画中有中断的就把最小值适当调大,有过有白边就把最小值往小调一些。

下面我把我处理的效果图放出来让大家有更加直观的理解,在这里我对图片做了旋转。

最小值设置成50时的效果:

最小值设置成150时的效果: 大家可以适当调整该值获得最佳效果。 经过我的测试,一般来说,纸笔笔质量好,字写得粗一点,保持我设置的默认值就可以。

保存并使用电子签名

现在你已经有了一个透明背景的个人签名,你可以将它保存起来,并在需要的时候复制粘贴至电子文件上。这样,你就无需再经历繁琐的打印-签字-扫描的过程,大大提升了工作效率,也保持了文件的整洁美观。 大多数pdf编辑器都支持pdf签名,把签名图片放进去调整一下就可以了。

为了防止有人不会,我这里把我用的方法写出来。

我使用的是StirlingPDF,StirlingPDF是一款方便易用的PDF编辑器,可以用于添加和修改PDF文件中的文本,插入图片,创建和填写表格,还可以添加电子签名。为什么用这个?因为它是开源免费本地程序,不用联网,安全性更好,不用担心信息泄露问题,并且功能丰富。 以下是如何使用StirlingPDF添加电子签名的过程。

使用StirlingPDF进行电子签名教程

下载和安装StirlingPDF工具

首先,你需要在你的电脑上安装StirlingPDF。先在其官方网站上下载安装程序,然后遵照提示完成安装。

项目地址:github.com/Stirling-To...

由于大多数人无法访问下载,我已经下载最新版上传到网盘,可以在公众号消息回复"StirlingPDF"获取下载链接。 下载后运行程序界面如下:

地球标志可以切换语言,我们使用"标志"这一项进行电子签名。

打开PDF文件

点击""标志""进入签署页面,然后选择"选择文件"。在弹出的窗口中,找到你想要编辑的PDF文件,点击"打开"。

选择插入签名的位置

在文件中,找到你想要添加签名的位置。然后点击工具框中的"签名"工具。在弹出的对话框中,选择"创建新签名"。

加载你的电子签名

在新窗口中,你可以上传你的电子签名,点击"从图片导入"。找到你的电子签名的文件,点击"打开"。

插入电子签名

现在你的电子签名已经加载到StirlingPDF中了。你可以点击"添加签名",然后在文件的需要签名的地方,点击一下。你的签名就会插入到那个位置。

调整签名的大小和位置

你可以通过拖动签名的四个角,来调整签名的大小。同时,你可以通过拖动签名,来改变签名的位置。

保存文件

最后,当你对签名的大小和位置满意后,点击工具框中的"保存"按钮,将你的文件保存起来。 效果如下:

以上,就是在StirlingPDF中添加电子签名的全部步骤。这样,你就可以非常方便地将你的电子签名添加到任何PDF文件中,节省时间,提高效率。 如果上面的说明不够具体,可以看下面这张图,我把步骤都体现了。

附程序源码

ini 复制代码
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image, ImageTk
import qrcode

def create_qr_code(help_link):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        # box_size=10,
        box_size=5,
        border=1,
    )
    qr.add_data(help_link)
    qr.make(fit=True)
    return qr.make_image(fill="black", back_color="white")

def remove_background(image_path, max_value, min_value):

    img = Image.open(image_path)
    img = img.convert("RGBA")
    datas = img.getdata()
    new_data = []
    for item in datas:
        if all([x > min_value and x < max_value for x in item]): 
            new_data.append((255, 255, 255, 0))
        else:
            new_data.append(item)

    img.putdata(new_data)
    img.save("我的签名图片-透明背景.png", "PNG")
    return "我的签名图片-透明背景.png"

def select_image():
    filename = filedialog.askopenfilename()
    if filename:
        img_path.set(filename)

def process():
    output_path = remove_background(img_path.get(), int(max_value.get()), int(min_value.get()))
    messagebox.showinfo("处理完成", f"图片已保存到: {output_path}")


root = tk.Tk()
root.title('签名图片透明化')
root.geometry('300x400+30+30')

img_path = tk.StringVar()
max_value = tk.StringVar()
min_value = tk.StringVar()


min_value.set(10) # 对于白底黑字签名,值越小越不容易有白边
max_value.set(256)
 
help_link_image = create_qr_code('http://www.weiyoun.com')
# help_link_photo = ImageTk.PhotoImage(help_link_image,height=10,width=10)
help_link_photo = ImageTk.PhotoImage(help_link_image,size=(10,10))
# help_link_image.grid()


filepath_label = tk.Label(root, text="路径").grid(row=5, column=1)
img_path_entry = tk.Entry(root, textvariable=img_path)
img_path_entry.insert(0,r'签名.png')
img_path_entry.grid(row=5, column=2)
button = tk.Button(root, text="选择图片", command=select_image)
button.grid(row=5, column=3)

min_value_label = tk.Label(root, text="最小值").grid(row=10, column=1)
min_value_input = tk.Entry(root, textvariable=min_value).grid(row=10, column=2)
max_value_label = tk.Label(root, text="最大值").grid(row=12, column=1)
max_value_input = tk.Entry(root, textvariable=max_value).grid(row=12, column=2)
button_process = tk.Button(root, text="开始处理", command=process,background='green')
button_process.grid(row=15, column=3)

hlep_label = tk.Label(root, text="扫码获取帮助").grid(row=20, column=1,columnspan=2)
img_label = tk.Label(root, image=help_link_photo)
img_label.grid(row=30, column=1,columnspan=2)


root.mainloop()

附打包程序

公众回复消息"「签名制作程序」 "即可获取背景透明处理程序。 公众号消息回复"「StirlingPDF」"即可获取StirlingPDF程序。

以上两个程序的用途不局限于我文章中提到的用法,我写的程序也可以用于其他你需要透明背景图片的地方,而开源的StirlingPDF功能更是非常丰富,让pdf处理更加简单方便。

「希望你用的愉快!」

点赞是一种态度、关注是一种信任、评论是一种思想、朋友是永远的福、愿你天天笑哈哈、幸福年复年。

为什么会有这篇文章

在日常办公中,报告需要签字是常见的需求。我们常常需要经历打印-签名-扫描的流程,然后再用软件将扫描后的签名和原报告的PDF进行拼接。这个过程不仅耗时,而且扫描后的文件质量和观感也无法达到理想的效果。

鉴于这样的困扰,我探索了一种实际操作并实际使用的方法,可以帮助我们制作并使用个人电子签名。此方法完全免费,并在本地完成,因此无需担心个人信息泄露的问题。

下面是我制作和使用自己的电子签名的过程。

自制电子签名步骤

在白纸上手写签名

首先,在一张干净的白纸上用钢笔或者墨水笔手写你的签名。为了使签名更加鲜明清晰,这里建议用稍微粗一些的笔尖。

我这里以"周树人"为例,由于现在手头的笔质量一般,所以写出来的效果不是特别好。我写自己签名的时候用水笔写的,效果更好。

拍照截取

签名完成后,用手机或者扫描仪扫描你的签名。这里要保证整个拍摄过程中,光线充足且尽量避免阴影的影响。签名需要占据图片的主体部分。 我这里灯光不是太均匀,但整体还可以。

去除白色背景,使签名透明

将签名的图片导入到电脑上后,我们使用Python脚本进行处理,去除白色背景,使得签名部分透明。这需要借助图像处理库Pillow,同时,我使用tk构建了一个GUI界面,使得整个操作更加方便直观。为了不影响阅读,我把代码放在文末,供有一定基础的朋友使用,如果你没有基础也没关系,我会提供打包后可以直接运行的程序。 界面是这样: 使用也很简单: 运行程序后,点击"选择图片按钮",选中你刚才截取的签名图片,然后点击"开始处理"按钮,就把处理好的签名保存下来了。

如果效果不好可以调整界面上的最小值,对于白底黑字,如果处理后笔画中有中断的就把最小值适当调大,有过有白边就把最小值往小调一些。

下面我把我处理的效果图放出来让大家有更加直观的理解,在这里我对图片做了旋转。

最小值设置成50时的效果:

最小值设置成150时的效果: 大家可以适当调整该值获得最佳效果。 经过我的测试,一般来说,纸笔笔质量好,字写得粗一点,保持我设置的默认值就可以。

保存并使用电子签名

现在你已经有了一个透明背景的个人签名,你可以将它保存起来,并在需要的时候复制粘贴至电子文件上。这样,你就无需再经历繁琐的打印-签字-扫描的过程,大大提升了工作效率,也保持了文件的整洁美观。 大多数pdf编辑器都支持pdf签名,把签名图片放进去调整一下就可以了。

为了防止有人不会,我这里把我用的方法写出来。

我使用的是StirlingPDF,StirlingPDF是一款方便易用的PDF编辑器,可以用于添加和修改PDF文件中的文本,插入图片,创建和填写表格,还可以添加电子签名。为什么用这个?因为它是开源免费本地程序,不用联网,安全性更好,不用担心信息泄露问题,并且功能丰富。 以下是如何使用StirlingPDF添加电子签名的过程。

使用StirlingPDF进行电子签名教程

下载和安装StirlingPDF工具

首先,你需要在你的电脑上安装StirlingPDF。先在其官方网站上下载安装程序,然后遵照提示完成安装。

项目地址:github.com/Stirling-To...

由于大多数人无法访问下载,我已经下载最新版上传到网盘,可以在公众号消息回复"StirlingPDF"获取下载链接。 下载后运行程序界面如下:

地球标志可以切换语言,我们使用"标志"这一项进行电子签名。

打开PDF文件

点击""标志""进入签署页面,然后选择"选择文件"。在弹出的窗口中,找到你想要编辑的PDF文件,点击"打开"。

选择插入签名的位置

在文件中,找到你想要添加签名的位置。然后点击工具框中的"签名"工具。在弹出的对话框中,选择"创建新签名"。

加载你的电子签名

在新窗口中,你可以上传你的电子签名,点击"从图片导入"。找到你的电子签名的文件,点击"打开"。

插入电子签名

现在你的电子签名已经加载到StirlingPDF中了。你可以点击"添加签名",然后在文件的需要签名的地方,点击一下。你的签名就会插入到那个位置。

调整签名的大小和位置

你可以通过拖动签名的四个角,来调整签名的大小。同时,你可以通过拖动签名,来改变签名的位置。

保存文件

最后,当你对签名的大小和位置满意后,点击工具框中的"保存"按钮,将你的文件保存起来。 效果如下:

以上,就是在StirlingPDF中添加电子签名的全部步骤。这样,你就可以非常方便地将你的电子签名添加到任何PDF文件中,节省时间,提高效率。 如果上面的说明不够具体,可以看下面这张图,我把步骤都体现了。

附程序源码

ini 复制代码
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image, ImageTk
import qrcode

def create_qr_code(help_link):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        # box_size=10,
        box_size=5,
        border=1,
    )
    qr.add_data(help_link)
    qr.make(fit=True)
    return qr.make_image(fill="black", back_color="white")

def remove_background(image_path, max_value, min_value):

    img = Image.open(image_path)
    img = img.convert("RGBA")
    datas = img.getdata()
    new_data = []
    for item in datas:
        if all([x > min_value and x < max_value for x in item]): 
            new_data.append((255, 255, 255, 0))
        else:
            new_data.append(item)

    img.putdata(new_data)
    img.save("我的签名图片-透明背景.png", "PNG")
    return "我的签名图片-透明背景.png"

def select_image():
    filename = filedialog.askopenfilename()
    if filename:
        img_path.set(filename)

def process():
    output_path = remove_background(img_path.get(), int(max_value.get()), int(min_value.get()))
    messagebox.showinfo("处理完成", f"图片已保存到: {output_path}")


root = tk.Tk()
root.title('签名图片透明化')
root.geometry('300x400+30+30')

img_path = tk.StringVar()
max_value = tk.StringVar()
min_value = tk.StringVar()


min_value.set(10) # 对于白底黑字签名,值越小越不容易有白边
max_value.set(256)
 
help_link_image = create_qr_code('http://www.weiyoun.com')
# help_link_photo = ImageTk.PhotoImage(help_link_image,height=10,width=10)
help_link_photo = ImageTk.PhotoImage(help_link_image,size=(10,10))
# help_link_image.grid()


filepath_label = tk.Label(root, text="路径").grid(row=5, column=1)
img_path_entry = tk.Entry(root, textvariable=img_path)
img_path_entry.insert(0,r'签名.png')
img_path_entry.grid(row=5, column=2)
button = tk.Button(root, text="选择图片", command=select_image)
button.grid(row=5, column=3)

min_value_label = tk.Label(root, text="最小值").grid(row=10, column=1)
min_value_input = tk.Entry(root, textvariable=min_value).grid(row=10, column=2)
max_value_label = tk.Label(root, text="最大值").grid(row=12, column=1)
max_value_input = tk.Entry(root, textvariable=max_value).grid(row=12, column=2)
button_process = tk.Button(root, text="开始处理", command=process,background='green')
button_process.grid(row=15, column=3)

hlep_label = tk.Label(root, text="扫码获取帮助").grid(row=20, column=1,columnspan=2)
img_label = tk.Label(root, image=help_link_photo)
img_label.grid(row=30, column=1,columnspan=2)


root.mainloop()

附打包程序

公众回复消息"「签名制作程序」 "即可获取背景透明处理程序。 公众号消息回复"「StirlingPDF」"即可获取StirlingPDF程序。

以上两个程序的用途不局限于我文章中提到的用法,我写的程序也可以用于其他你需要透明背景图片的地方,而开源的StirlingPDF功能更是非常丰富,让pdf处理更加简单方便。

「希望你用的愉快!」

点赞是一种态度、关注是一种信任、评论是一种思想、朋友是永远的福、愿你天天笑哈哈、幸福年复年。

详细信息:我这样制作个人电子签名:简化签字扫描流程,方便且清晰 - WeiYoun

相关推荐
老白干2 小时前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
笨鸟先飞,勤能补拙8 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能9 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂9 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study10 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境11 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境11 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd12311 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy123931021611 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb0012 小时前
一个项目带你入门AI应用开发01
python