最近在某论坛又看到有人在鼓吹DjVu,甚至声称拿到PDG就转成DjVu,忍不住想再敲打敲打。

早几年前就已经有人举出过实例,证明PDG、TIFF转DjVu会因为有损压缩而产生错别字,似乎时间长了一堆新人又不知道了,或者以为以前的例子都是低分辨率图像,现在分辨率高了,不会再有事了——还真是图样图森破。

那就再给大家见识一个高分辨率扫描图像转DjVu后出问题的例子:
http://djvu.org/gallery/documents/magazines/computerworld/index.djvu
把文件下载下来后用WinDjView打开,拖到最后一页,看到那个空荡荡的椭圆白框了吗?你不觉得在那个位置出现这么一个空白区有点反人类?

用最新版DjVuToy把这个DjVu文件转换成PDF,在同样位置你是不是看到了点什么:

如果还不死心,可以用DjVuToy导出该页的字典图像,然后你就会看清楚究竟损失了什么。

那么问题来了:
1、djvu.org网站在DjVu方面的专业性需要怀疑吗?你自己鼓捣的DjVu文件,有可能比这种专业网站专门做出来当门面的文件质量更高吗?
2、用DjVuToy导出信息可以看到,这一页的DPI是600,你这辈子到手的PDG文件就算再清晰,有可能达到600 DPI吗?你到手的扫描图像,有几张能真正达到600 DPI?
3、即使是这样专门制作来当门面的高分辨率DjVu,都会出现把图像内容“有损”掉的情况,那些误信DjVu的人是不是真心“无知者无畏”?那些鼓吹DjVu的人是不是要么蠢要么坏?

我可以理解某些人追求DjVu是为了节省硬盘空间,但我相信等到他们过了“贫穷限制想象力”的阶段,就会发现省下来的钱都用来交智商税了,说不定还不够。毕竟有些资料是有窗口期的,等过了窗口期,想洗牌都找不到原始文件了。

BTW:PDF的JBig2压缩与DjVu的JB2压缩是一路货色,在采用有损压缩时同样存在把某些内容“有损”掉的可能,这就是为什么我说我在有选择的情况下,从来不要DjVu或从DjVu转出来的PDF(不论是否采用JBig2压缩),或者直接采用JBig2压缩的PDF的原因:我可以从数学上证明DjVuToy从JB2到JBig2的转换过程是无损的,但我没有办法证明我拿到的DjVu或PDF在制作时,究竟选择了有损还是无损的JBig2压缩,所以这种格式的电子书不管你们信不信,我自己反正是不信的。

再往DjVu鼓吹者的头上敲一棒子的更多相关文章

  1. ios开发之再谈设计模式

    子曰:设计模式这东西,没有好坏之分,只有合适于不合适 天去面试很有意思,技术考官指着最后一道二选一的编程题说,这是昨天晚上专门为你新加的.当时我听后倍感惭愧. 虽然当时在纸上把大概思路和设计说了下.为 ...

  2. DjVu、PDF中的隐藏文本

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2012.06.11 目录一.背景二.DjVu中的隐藏文本三.PDF中的隐藏文本 一.背景 目前对于扫描电子文档,网上比较流行 ...

  3. 洋媳妇Susan教育孩子的方法

    洋媳妇Susan教育孩子的方法 一个中国婆婆跟我说:「我的儿子去美国留学,毕业后定居美国. 还给我找了个洋媳妇Susan. 如今,小孙子Toby已经3岁了. 今年夏天,儿子為我申请了探亲签证. 在美国 ...

  4. KaiWu 的体验

    KaiWu 的体验 来源 https://www.zhihu.com/question/28950444 >>>>>>>>>>>> ...

  5. 学习 git基础命令

    缘起 年后到了新公司,由于个人意愿到了一个海外的项目组,除了自己从Java技术栈转了C#技术栈外,很多技术都是第一次使用,学习压力不小啊. 自己也就先从常用的技术开始学起,比如C#,AngularJS ...

  6. 课程设计 --- 黑白棋中的 AI

    原文链接:https://www.dreamwings.cn/reversi/3013.html 到了考试周了佯,可是偏偏这个时候迎来了很多很多的课程设计,幸好教授把C语言的课程设计提前发出了,不然都 ...

  7. mybatis使用generator生成对应的model、mapping配置文件、dao

    http://blog.csdn.net/fengshizty/article/details/43086833 使用时 补充 输入命令:cd d:\generator  敲回车 再输入命令:d: 敲 ...

  8. Java Socket Server的演进 (一)

    最近在看一些网络服务器的设计, 本文就从起源的角度介绍一下现代网络服务器处理并发连接的思路, 例子就用java提供的API. 1.单线程同步阻塞式服务器及操作系统API 此种是最简单的socket服务 ...

  9. 阿帕奇apache服务器和webDav服务器快速配置。

    当自己在家敲代码需要发请求时,就可以配置本地apache,Mac电脑自带的服务器.这个比windows上的本地服务器还要好用,下面写下最快速配置方案. 0.在开始之前需要给自己的电脑设置下开机密码,想 ...

随机推荐

  1. jenkinsapi和python打包工具的安装日志

    Successfully installed PyInstaller-3.3.1 altgraph-0.15 dis3-0.1.2 future-0.16.0 macholib-1.9 pefile- ...

  2. 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符

    环境: win7 cmd窗口编译 javac xx.java时报错 错误显示:错误:编码GBK的不可映射字符 背景: 分析发现是中文字符所在行报错了 查阅相关资料发现,是因为编译器设置为了utf-8, ...

  3. ssh-add - 向认证代理添加 RSA 或 DSA 身份数据

    总览 (SYNOPSIS) ssh-add [-lLdDx ] [-t life ] [file ... ] ssh-add -s reader ssh-add -e reader 描述 (DESCR ...

  4. thinkphp在 nginx 的conf文件配置

    server { listen 80; server_name www.osd-aisa.com; #charset koi8-r; #access_log logs/host.access.log ...

  5. ubuntu16.04的一系列安装

    1.安装ubuntu https://blog.csdn.net/weixin_40494464/article/details/81010256 2.ubuntu里选择简体中文 https://bl ...

  6. jquery 小知识

    $("p:eq(0)") :表p标签的第一个元素 $("p:eq(1)") :表p标签的第二个元素

  7. spring @Query使用对象参数

    @Transactional @Modifying @Query(value = "UPDATE az_news a SET a.news_content =:#{#news.newsCon ...

  8. python之pandas模块高级用法

    一 agg,聚合,可以使用内置的函数 >>> import pandas as pd >>> import numpy as np >>> pp ...

  9. python方法参数:*和**操作符

    * def test_args_kwargs(arg1, arg2, arg3): print("arg1:", arg1) print("arg2:", ar ...

  10. Codeforces 776E: The Holmes Children (数论 欧拉函数)

    题目链接 先看题目中给的函数f(n)和g(n) 对于f(n),若自然数对(x,y)满足 x+y=n,且gcd(x,y)=1,则这样的数对对数为f(n) 证明f(n)=phi(n) 设有命题 对任意自然 ...