最近在某论坛又看到有人在鼓吹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. 分布式自增ID算法-Snowflake详解

    1.Snowflake简介 互联网快速发展的今天,分布式应用系统已经见怪不怪,在分布式系统中,我们需要各种各样的ID,既然是ID那么必然是要保证全局唯一,除此之外,不同当业务还需要不同的特性,比如像并 ...

  2. 我心中的ASP.NET Core 新核心对象WebHost(一)

    以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...

  3. ubuntu安装supervisor以及使用supervisor启动.net core进程

    1.下载.net core项目ubuntu系统运行容器dotnet      1.版本:dotnet-sdk-2.1.3-linux-x64.tar.gz      2.将下载好的包上传到ubuntu ...

  4. JavaScript 内置对象 Array 数组

    Array 数组 1.创建数组 构造函数 new Array() 小括号内可以是数组元素个数,也可以是数组项 数组字面量表示法 var arr = [1,2,3,4,5]; 2.数组长度 arr.le ...

  5. vue.js(8)--v-for的使用

    v-for遍历数组.对象数组.对象.迭代次数 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. 记一次redis读取超时的排查过程(SADD惹的祸)

    问题背景 在业务使用redis过程中,出现了read timeout 的异常. 问题排查 直接原因 运维查询redis慢查询日志,发现在异常时间节点,有redis慢查询日志,执行sadd 命令花费了1 ...

  7. maven system path,加载本地jar

    当引用第三方包,且没有源代码时候,可以使用system path <dependency> <groupId>ctec</groupId> <artifact ...

  8. linux篇—Nginx反向代理负载均衡

    一.环境准备 反向代理功能架构 3台web服务器,组建出web服务器集群 web01 10.0.0.7 172.16.1.7 web02 10.0.0.8 172.16.1.8 web03 10.0. ...

  9. Codeforces Round #454 (Div. 1) CodeForces 906D Power Tower (欧拉降幂)

    题目链接:http://codeforces.com/contest/906/problem/D 题目大意:给定n个整数w[1],w[2],……,w[n],和一个数m,然后有q个询问,每个询问给出一个 ...

  10. Sass-数字运算

    在 Sass 运算中数字运算是较为常见的,数字运算包括前面介绍的:加法.减法.乘法和除法等运算.而且还可以通过括号来修改他们的运算先后顺序.和我们数学运算是一样的,一起来看个示例. .box { wi ...