绘制图形可以使用什么python函数_如何对绘制PDF图形的Python函数进行单元测试?...
(另请参阅下面的更新!)
我在Linux上用一个shell脚本做同样的事情ImageMagick的compare命令
pdftk实用程序
Ghostscript(可选)
(将其移植到DOS/Windows的.bat批处理文件将非常容易。)
我的应用程序创建了一些“已知良好”的参考PDF。代码更改后新生成的PDF将与这些参考PDF进行比较。比较是逐像素进行的,并保存为新的PDF格式。在这个PDF中,所有不变的像素都被画成白色,而所有不同的像素都被画成红色。在
以下是构建基块:
pdftk公司
使用此命令将多页PDF文件拆分为多个单页PDF:pdftk reference.pdf burst output somewhere/reference_page_%03d.pdf
pdftk comparison.pdf burst output somewhere/comparison_page_%03d.pdf
比较
使用此命令为每个页面创建一个“diff”PDF页面:
^{pr2}$
幽灵脚本
由于自动插入元数据(例如当前日期+时间),PDF输出不能很好地用于基于MD5hash的文件比较。在
如果您想自动发现由纯白页组成的所有案例,还可以使用bmp256输出设备转换为无元数据位图格式。您可以对原始PDF(参考和比较)或diff PDF页面执行此操作:gs \
-o reference_diff_page_001.bmp \
-r72 \
-g595x842 \
-sDEVICE=bmp256 \
reference_diff_page_001.pdf
md5sum reference_diff_page_001.bmp
如果MD5sum是您期望的595x842 PostScript点的全白页,那么单元测试通过了。在
更新:
我不知道为什么我之前没有想到从ImageMagick compare生成一个直方图输出。。。在
以下是链接两个不同命令的命令管道:第一个与上面的compare相同,它生成“白色像素相等,红色像素不同”格式,只输出ImageMagick内部miff格式。它不写入文件,而是写入stdout。在
第二种方法使用convert读取stdin,生成直方图并以文本形式输出结果。将有两条线:
表示白色像素数的一个
另一个表示红色像素的数量。在
接下来是:compare \
reference.pdf \
current.pdf \
-compose src \
miff:- \
| \
convert \
- \
-define histogram:unique-colors=true \
-format %c \
histogram:info:-
样本输出:56934: (61937, 0, 7710,52428) #F1F100001E1ECCCC srgba(241,0,30,0.8)
444056: (65535,65535,65535,52428) #FFFFFFFFFFFFCCCC srgba(255,255,255,0.8)
我认为这种类型的输出非常适合于自动单元测试。如果你计算这两个数字,你可以很容易地计算出“红色像素”的百分比,甚至可以根据某个阈值决定返回通过或失败(如果出于某种原因不一定需要“零红色”)。在
绘制图形可以使用什么python函数_如何对绘制PDF图形的Python函数进行单元测试?...相关推荐
- python设置笔大小的函数_小朋友们,你试过用Python语言绘制小猪佩奇吗?来完成你的第一个创作吧!...
在上一章中,我们用海龟绘图绘制了机器猫的卡通图像.在本章中,我们介绍如何用海龟绘图来绘制小朋友们喜欢的另一个卡通形象--小猪佩奇. 1 程序分析 我们先来看一下小猪佩奇的样子,如图1所示. 图1 观察 ...
- python怎么用gamma函数_如何通俗的理解伽马(gamma)函数
如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例 我为什么要在乎garmma分布? 使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等. 对于数 ...
- python key=lambda函数_使用’key’和lambda表达式的python max函数
我来自OOP背景,尝试学习Python.我使用的是max函数,该函数使用lambda表达式返回Player类型的实例,其中players列表中的totalScore最大. def winner(): ...
- robotframework调用python类方法_【RF基础】RF调用Python函数基础
本文简单介绍了如何在robot里面调用一个python写的函数. 构建 我们在D盘下创建两个文件,一个叫pyfile.py,用于编写python函数,另外一个叫test.txt,编写我们的测试用例. ...
- coalesce函数_什么是SQL Server COALESCE()函数?
coalesce函数 Hey, folks! In this article, we will be focusing on SQL Server COALESCE() function. 嘿伙计! ...
- 类的应用python平均分_【数据科学系统学习】Python # 数据分析基本操作[四] 数据规整化和数据聚合与分组运算...
本篇内容为整理<利用Python进行数据分析>,博主使用代码为 Python3,部分内容和书本有出入. 在前几篇中我们介绍了 NumPy.pandas.matplotlib 三个库的基本操 ...
- cmd中如何运行python文件_在cmd中运行.py文件: python的操作步骤
在cmd中运行.py文件: python的操作步骤 1 打开cmd, 不改变运行的目录: 输入python 空格 调试好的python文件路径 或者python 空格 将python文件拖入cmd ...
- 阿里巴巴python教程_我敢打赌,这份python入门教程看了绝对有用
前段时间用Python刷了一些题,把刷题的过程遇到的一些小知识点总结了一下,都是一些比较基础的知识点,特别适合一些刚入门的新手看lambda表达式 lambda表达式是起到一个函数速写的作用.允许在代 ...
- lambda调用函数_从另一个Lambda函数调用AWS Lambda函数
lambda调用函数 In this article, I am going to explain how to create an AWS Lambda function and then call ...
- python 监测_理解监测指标,并使用Python去监测它们
通过学习这些关键的术语和概念来理解 Python 应用监测. 当我***次看到术语"计数器counter"和"计量器gauge"和使用颜色及标记着"平 ...
最新文章
- mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句
- [Ubuntu] bash shell soft-link error: Too many levels of symbolic links
- python xlrd模块_Python中xlrd模块解析
- date类型_Chapter 01. 常见数据类型概述 Overview of Common Data Types
- 【转】现代浏览器的工作原理
- CI框架的使用-环境搭建
- 64qam带宽计算_滚降系数为0.5的64QAM信号,数据速率若为_____,则带宽为______。
- ov5640帧率配置_OV5640摄像头的数据处理配置流程(一)
- 读《摄影测量与遥感概论》有感
- Python学习:IndentationError: expected an indented block
- java json字符串转化为list
- electron坑: 缩小放大快捷键
- 微商怎么引流?不懂这些就引不来流量!
- html中的字体英文名称
- 游戏安全与反外挂:加固工具介绍
- 0x800700E1: 无法成功完成操作,因为文件包含病毒 解决方法
- Copernicus Open Access Hub哥白尼开放中心
- FDTD学习之偶极子光源的purcell值
- RNN编码器-解码器
- IDA-逆向分析-工具教程-IDA简介-反汇编工具-功能窗口