最近在某论坛又看到有人在鼓吹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. JavaScript 各种遍历方式详解及总结

    JavaScript 各种遍历方式详解 在$.each中想要终止循环,但是它没有continue或者break这样的终止方式,所以尝试使用return来进行终止,但是发现并没有跳出循环.为了搞清楚js ...

  2. MySQL 授权用户 ; 存储过程的DEFINER; 命令分隔符DELIMITER

    最近项目中遇到有人使用DEFINER这样的关键字,找了半天没有怎么理解这个意思.以为是限制谁使用这个存储过程,后来测试发现并不是这样. 搜索网上发现很多说法都不正确.看到一篇博客,做了如下介绍,才有所 ...

  3. 全文检索引擎sphinx 与 Elasticsearch 索引速度对比

    sphinx的特色之一是建立索引速度快,最近转投Elasticsearch后,一直想做个对比,网上资料常见说法是10倍的差距. 测试环境 硬件:单核,2G内存的E5-2630 虚拟机 操作系统:Cen ...

  4. 基于Xilinx Zynq的计算处理平台

    基于Xilinx Zynq XC7Z045 FFG 900的高性能计算模块 本模块基于Xilinx公司的FPGA XC7Z045 FFG 9000 芯片, 支持64bitDDR3, 容量2GByte: ...

  5. vue,一路走来(11)--HTML5 History模式

    HTML5 History模式 项目中我用的是history模式. 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. 如果不 ...

  6. linux的定时任务--crontab

    cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动.关闭这个服务: /sbin/service c ...

  7. 无法用另一台电脑上的navicat链接主机数据库lost connection toMYSQl server at "handshake":reading inital communication packet,system error:34

    同事要用navicat登陆我的数据库,主机地址和密码都没错,但是报错,lost connection toMYSQl server at "handshake":reading i ...

  8. python处理文件某行的固定位置

    1.打开文件 2.按行循环 3.处理固定行 with open('file/Aa.txt') as f: for line in f: print(line[2:12]) 可以这样处理的原因是,lin ...

  9. centos6.8安装tomcat多容器的处理办法,及安装zk、dubbo

    系统环境: Linux-centosOS6.8-bit64 JDK1.8 1.Tomcat多容器的处理方案 首先,不论tomcat的版本是否有多个,路径是否相同,肯定的是可以运行多个容器. 处理以下两 ...

  10. sql 用语句还原多数据文件的数据库

    /* 还原bak数据库文件*/ RESTORE DATABASE userdb_cs /*还原为userdb名的新数据库*/ FROM DISK = 'D:\工作资料\数据库文件\userdb.bak ...