我们的团队开发了一个应用程序,该应用程序在某些功能上连接到扫描仪(通过 TWAIN 或 WIA)并扫描文档,并从中生成 PDF 文件。该应用程序主要用于处理带有少量图像的邮件或文档。
我们最近注意到,尽管使用了类似的扫描仪参数(分辨率、颜色等),但我们的应用程序生成的 PDF 文件(就文件大小而言)是扫描仪软件生成的文件的四倍。
所以我深入研究了生成的pdf文件,这就是我得到的:
通过 MuPDF 组件
mutool.exe,我获得了有关 PDF 内对象的信息:我们的 PDF 包含一张图像(不足为奇,它直接来自扫描结果):
[ DCT ] 3302x4668 8bpc DevRGB扫描仪软件生成的 PDF 文件包含两个图像(啊哈!这更令人惊讶),它们的大小不同,并且没有相同的颜色配置文件:
[ DCT ] 1650x2334 8bpc DevRGB [ CCITTFax ] 3176x4512 1bpc ImageMask
- 仍然使用
mutool,我从扫描仪软件生成的PDF中提取了两张图片:- 第一张图片是我们可以称之为“背景”的东西:这是它的缩略图,以及 100% 尺寸的细节:

- 第二张图像是纯黑白(每像素 1 位)图层,大部分为黑色;这是 100% 尺寸的细节:

- 第一张图片是我们可以称之为“背景”的东西:这是它的缩略图,以及 100% 尺寸的细节:
因此,扫描仪随附的软件似乎使用了一种算法,该算法检测到文档大部分是黑白的,然后将图像分解为重叠的两部分;第一部分包含可以下采样的小细节(因此占用更少的空间),第二部分仅包含黑色或白色点,可以实现更好的压缩。
我的问题是:我们怎样才能做类似的事情?
谢谢