from html2image import Html2Image
def screenshot(data):
# 使用SRGB颜色模式兼容对比ps中导出的图片格式
hti = Html2Image(custom_flags=['--force-color-profile=SRGB','--disable-gpu'])
# 解析请求数据
data = request_parse(request)
htmlCode = data['code']
# 生成随机图片地址
timestamp = int(time.time())
randomStr = ''.join(random.sample('zyxwvutsrqponmlkjihgfedcba',5))
png = str(timestamp)+ randomStr + ".png"
# 在docker的headless类型的chorme没有高度 这个是个不友好的方式
htmlTmp= """
<html style="height:100%;">
<head>
</head>
<body style="height:100%;">
{content}
</body>
</html>
"""
htmlTmp = htmlTmp.format(content=htmlCode)
#截图完成,其他api可以再git中查看
hti.screenshot(html_str=htmlTmp,save_as=png,size=(400, 300))
图片对比 ,
ps: 为什么不用常见的图片比较方法类型:均值、差值、感知哈希算法,三直方图算法和单通道等等算法,因为当前的场景是比较两个图片是否一致而不是相似度的比较,不需要相似值,而是决定误差是多少
pipreqs --encoding=utf-8 --force
# 基于镜像基础
FROM python:3.7
# 端口
EXPOSE 9567
# 设置代码文件夹工作目录 /app
WORKDIR /app
# 复制当前代码文件到容器中 /app
COPY . /app
# 时间设置很重要
RUN echo "Acquire::Check-Valid-Until \"false\";\nAcquire::Check-Date \"false\";" | cat > /etc/apt/apt.conf.d/10no--check-valid-until
# 镜像源设置
RUN sed -i 's|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
RUN sed -i 's#http://deb.debian.org#https://mirrors.163.com#g' /etc/apt/sources.list
# 下载依赖
RUN apt-get clean
RUN apt-get update -y && apt-get install -y icc-profiles-free
RUN apt-get update -y && apt-get install -y chromium
# 无头浏览器设置很重要
RUN echo 'export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --no-sandbox --disable-gpu"' >> /etc/chromium.d/default-flags
# MOTD
RUN echo " \n =============HTML2IMAGE============= \n Welcome to the html2image CLI container ! \n Type html2image -h for help :)" >> /etc/motd
RUN echo "clear" >> /root/.bashrc
RUN echo "cat /etc/motd" >> /root/.bashrc
# 设置python静态
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装所需的包
RUN pip install -r requirements.txt
# Run app.py when the container launches
CMD ["python", "run.py"]