背景
- selenium截图加上地址栏并写入链接
-
提前准备地址栏背景图
header_bg_1440.png
目标
add_text.jpg
过程
def screenshot_add_head(self, html_pic, max_len=210):
'''
给网页截图添加地址栏
:param html_pic: selenium截图 (bytes)
:param max_len: 地址栏最大长度 (int)
:return: 拼接后的图片 (bytes)
'''
try:
# 1.地址栏图片绘制url
bk_img = cv2.imread(self.header_bg_path)
# 设置需要显示的字体 微软雅黑
fontpath = "font/msyh.ttc"
# 字体大小
font = ImageFont.truetype(fontpath, 13)
img_pil = Image.fromarray(bk_img)
draw = ImageDraw.Draw(img_pil)
draw_text = self.browser.current_url
# 超长链接截取
if len(draw_text) > max_len:
draw_text = draw_text[0:max_len] + '....'
# 绘制文字信息,位置xy,颜色
draw.text((140, 12), draw_text, font=font, fill=(255, 255, 255))
# bk_img = np.array(img_pil)
# cv2.waitKey()
# header_pic = cv2.imwrite("add_text.jpg", bk_img)
# 2.拼接图片
# img1 = Image.open(bk_img)
img1 = img_pil
bytes_stream = io.BytesIO(html_pic)
img2 = Image.open(bytes_stream)
# 统一图片尺寸,可以自定义设置(宽,高)
img1 = img1.resize((self.window_size_width, img1.size[1]), Image.ANTIALIAS)
img2 = img2.resize((self.window_size_width, img2.size[1]), Image.ANTIALIAS)
size1, size2 = img1.size, img2.size
joint = Image.new('RGB', (size1[0], size1[1] + size2[1]))
loc1, loc2 = (0, 0), (0, size1[1])
joint.paste(img1, loc1)
joint.paste(img2, loc2)
# 将Image转为bytes
img_bytes = self.image2byte(joint)
self.logger.info('截图编辑完成')
return img_bytes
except Exception as e:
self.logger.info('-----> edit screenshot err:' + e)
总结
- self.window_size_width = 1440 截图宽度1440像素
致谢
- 如果发现问题请评论
- 如果对您有帮助请点赞