确定性地将pdf转换为png或测试字节序列几乎相同

时间:2018-04-06 14:31:41

标签: python imagemagick imagemagick-convert wand

我正在使用Wand将pdf转换为png,我想在我的测试中确保pdf输入转换产生的字节序列总是产生相同的字节序列给定一组转换参数的png输出。

不幸的是,情况并非如此,并且为了原因而进行了一些挖掘,看来Wand没有能够在没有设置当前日期的情况下保存png(https://github.com/dahlia/wand/issues/369

我仍然可以使用imagemagick直接使用imagemagick测试-define png:exclude-chunks=date标记,该标记显然没有在创建的png上设置日期,但也许还有另一个更有趣,更准确的方法。

我目前正在使用SequenceMatcher来测试输出,这是好的,但确定测试应该通过的级别有点武断,我对此并不满意。

@pytest.fixture
def simplebase64pdf(request):
    with open(os.path.join(request.fspath.dirname, 'data/dummy.pdf'), 'rb') as simplepdf:
        pdfbytes = simplepdf.read()
    pdfstrb64 = bytes_to_b64str(pdfbytes)
    assert b64str_to_bytes(pdfstrb64) == pdfbytes
    return pdfstrb64

def test_stability(simplebase64pdf):
    stable = []
    for i in range(2):
        img = get_image_from_pdf(b64str_to_bytes(simplebase64pdf))[0]
        stable.append(img)
        # with open(str(i)+'.png', 'wb') as f:
        #     f.write(img)
    x = SequenceMatcher(None, stable[0], stable[1]).ratio()
    assert x > 0.999

0 个答案:

没有答案