一.先下载wkhtmltopdf软件
官网下载地址: https://wkhtmltopdf.org/downloads.html
wkhtmltopdf软件下载链接:https://pan.baidu.com/s/11VOomkNch7C9m8lqlRaNAg 密码:4xuv
点击需要安装的版本号。
Windows版本需要把wkhtmltopdf的bin执行文件路径添加到PATH变量中。
二.安装Python库:imgkit。
pip install imgkit
这个库其实相当于软件的包装器,简单理解有了这个库我们就可以直接用代码调用软件,而不需要像平时那样需要自己去打开使用软件。
将html转化为png图片,就只有一步!
imgkit.from_file(‘cet.html’, ‘cet.png’)
三.将图片裁剪并添加马赛克
def html_to_png(is_add_mosaic=True):
"""
生成图片,可添加马赛克挡住准考证号
:param is_add_mosaic: 是否添加马赛克
:return:
"""
# 生成图片,需要安装wkhtmkltopdf软件
imgkit.from_file('cet.html', 'cet.png')
# 剪切图片
img = Image.open('cet.png')
cropped = img.crop((310, 300, 700, 700)) # (left, upper, right, lower)
cropped.save("cut_cet.png")
if is_add_mosaic:
add_mosaic(5, (146, 158), (170, 300))
def add_mosaic(mosaic_size, y_start_end, x_start_end):
"""
给图片添加马赛克,主要通过中间值的rgb对局部范围块的rgb做修改
:param mosaic_size: 马瑟克块元素大小,mosaic_size值越小越精确
:param y_start_end: 马赛克纵向起点值和终点值(相当于高度差)
:param x_start_end: 马赛克横向起点值和终点值(相当于宽度差)
:return:
"""
cut_img = np.array(Image.open('cut_cet.png'))
for i in range(y_start_end[0], y_start_end[1], mosaic_size):
for j in range(x_start_end[0], x_start_end[1], mosaic_size):
cut_img[i:i + mosaic_size, j:j + mosaic_size] = cut_img[i + (mosaic_size // 2)][j + (mosaic_size // 2)]
mosaic_img = Image.fromarray(cut_img.astype("uint8"))
mosaic_img.save('mosaic_cet.png')
mosaic_img.show()