作者:马健
邮箱:stronghorse_mj@hotmail.com
发布:2008.04.26

说明:此文以我在readfree上发的几个帖子为基础。这些帖子随着UnicornViewer的升级而陆续发布,基本上记录了UnicornViewer的一段升级历史。


目前发现连续翻页浏览器都面临几个同样的问题:

1、内存占用

与一次显示一页的浏览软件(如ComicsViewer)不同,连续翻页浏览器用于需要连续滚动,必须对前、后页进行缓存,否则翻页将不连贯。缓存如果管理不善,将可能导致内存占用持续增加。
Acrobat 8:怀疑有内存漏洞,浏览扫描版PDF时,随着翻页,内存占用会持续增加。不过Acrobat 8比Acrobat 7强一点:在我的512 MB内存机器上翻一本1000多页的扫描电子书,从头翻到尾,7居然把机器翻死了,8还勉强活着。
Foxit Reader 2.2:内存占用比较稳定。
WinDjView 5:在VC下运行debug版,会报告大量内存漏洞(我测试的时候,因为漏洞太多,以至于VC的错误报告自动截止了),不过这些漏洞基本上是从libdjvu带过来的 。
CajViewer 7:有一点轻微的内存漏洞(反复打开、关闭文档可以看出),不过翻页的时候内存占用比较稳定。
UnicornViewer:v0.10以前的版本在内存占用方面实在是臭名昭著,不过从v0.10开始脱胎换骨了,至少在浏览清晰版PDG的时候不会有什么内存漏洞。

2、同一文档在多个窗口中同时显示

有时候需要将一份文档前、后对照着看,这时最土的办法是启动两个浏览器,分别打开同一个文档,对照着看,好一点则是在同一个浏览器中,选择“窗口->新建窗口”,然后将两个窗口并排显示,以便比较。
Acrobat 8:支持,和Word 2003差不多。
Foxit Reader 2.2:支持,但是两个窗口只能上下排列,不能左右并列,看起来有点别扭。
WinDjView、CajViewer:不支持,所以我说他们的MDI界面只是披了一层皮,骨子里还是SDI。
UnicornViewer:早期版本就支持,不过一直不是很稳定。v0.10进行结构大调整后,运行很稳定,并且支持上下并列(平铺)、左右并列(纵铺)。

3、背景图案

我个人认为浏览器能够设置背景色已经足够了,但是国内某些用户可能被SSREADER惯坏了,非要能够设置背景图案才觉得爽。
这个功能要做过才知道有多难,总之Acrobat 8、Foxit Reader 2.2、WinDjView、CajViewer都不支持,UnicornViewer从v0.10开始支持,不过只能从内嵌的8个 背景图案中选。

4、图像缩放

在用连续翻页浏览器浏览的时候,很少有人会按图像的原始像素大小显示,多半都会选择某个缩放选项,因此图像缩放是浏览器必须面对的一个问题。
图像缩放里隐藏着一对永恒的矛盾:速度和效果,要想兼顾这二者是一件很难的事情。缩放速度直接影响到页面显示速度、翻页速度,而缩放效果则是缩放后人眼所看到的页面显示效果。
Acrobat 8:缩放速度、缩放效果比较均衡;以前版本的速度似乎有点问题,所以打开图版PDF时感觉有点痛苦。
Foxit Reader 2.2:早期版本有一个毛病:如果PDF页面是背景透明的黑白页面,则缩放后的显示效果会很差,不过后来的版本已经修正了这个错误。
WinDjView 5:缺省使用libdjvu的缩放功能,放大不错,缩小到一定程度后文字有点模糊,所以另外准备了一套高精度缩小算法。不过这个算法似乎速度有点问题(见WinDjView设置界面中的提示信息),所以缺省不开启,即使通过手工设置开启,也只有在缩小至50%以下时才会真正启用。
CAJViewer 7:缩小不错,放大不行。
UnicornViewer:以前贪图方便,用的是cximage的缩放代码,所以效果不错,速度不行。从v0.10开始,逐渐从ComicsViewer引入成熟代码,与cximage相结合。发展到v0.11,应该说速度和效果都比较均衡了。
其实图像缩放算法都是公开的:放大常用的有nearest、linear、cubic。其中nearest效果最差,但速度最快,所以UnicornViewer和PdgThumbViewer都用它来生成缩略图。cubic效果最好,但是运算量太大,没几个人愿用。linear在速度和效果上比较均衡,所以运用广泛。缩小常用的就是super-sampling。这些算法在Intel发行的Intel Image Processing Library Reference Manual附录B部分有详细解释,图文并茂、通俗易懂,有兴趣的不妨找来看看。
理论上说,如果采用相同的算法,各家软件的缩放效果应该是相同的。但为了加快速度,各家都采用独门秘技,在编码实现时对经典算法进行了力所能及的简化、转化(如浮点转定点等),最终导致各家在速度、效果方面产生了差异。

5、缩略图支持

缩略图这个东西,大多数时候没用,要用的时候还真不能没有。
但是天下从来没有白吃的午餐,显示缩略图也是要付出代价的:需要CPU来解码图像、生成缩略图,解码过程还可能与主界面的解码产生冲突;生成的缩略图需要在内存里保存。因此对时间和空间都有要求。
正因为如此,不少软件对缩略图都采取“能躲就躲”的政策,不过知难而上的也不是没有:
Acrobat 8:缺省情况下不显示缩略图,需要用户手工开启。而且缩略图只有在需要时才生成,不会在后台自动生成全部。
Foxit Reader 2.2:不支持缩略图,PDF带目录则显示目录,无目录则用页码代替目录。
Microsoft Office Document Imaging:缺省显示缩略图,而且生成缩略图的速度是我见过最快的,M$果然有人才啊!
WinDjView 5:缺省显示缩略图,而且缺省在后台悄悄生成所有页面的缩略图。经常看到有人抱怨打开大型DjVu的时候感觉像死机,其实多半是缩略图惹的祸,把那个缺省选项关掉就好多了。另外WinDjView不支持同一文档在多个窗口中同时显示,这 也与对缩略图的支持有关:这种支持限制了WinDjView的程序结构。
CAJViewer 7:不支持缩略图。
UnicornViewer:PDG缺省不显示缩略图,用目录代替;即使显示,缺省也是显示多少生成多少,不敢在后台全部生成。TIFF开始是向MODI学习,缺省显示缩略图;从v0.11开始,改为向Foxit Reader、CAJViewer学习,缺省用页码代替缩略图。

6、并排左翻

“并排左翻”的含义是:并排显示两页时,前页在右,后页在左,即按竖排书籍的排版方式显示。
Acrobat 8:可以通过在“首选项”的“国际”里设置“从右至左”来支持并排左翻。
Foxit Reader 2.2、WinDjView 5、CAJViewer 7均不支持此种显示方式。Foxit Reader、WinDjView情有可原,毕竟在西方书籍里没有这种翻页方式,但是CAJViewer这个“国产”软件也不支持,就有点不应该了,还是说知网的人都不看竖排书?
当年开发ComicsViewer时我就意识到这个功能的重要性(没办法,日本漫画都是这样翻的),但是由于种种原因,UnicornViewer直到v0.12才开始支持。可以预料,随着显示器尺寸越来越大,并排显示必将成为主流的阅读模式,而“并排左翻”对大陆用户来说可能只有读古籍才会用到,但对港台用户来说,却是日常必不可少的功能。

7、裁边

在连续显示时,页面上、下的页边空白如果很大,无疑会影响阅读;而对扫描书来说,由于种种原因导致页面边缘扫出黑边,看起来就更心烦。这些都可以通过“裁边”加以解决。
Acrobat 8支持裁边,但却是永久裁边,因此裁边后如果后悔了,不能恢复到原先的状态,所以我一直不敢用。Foxit Reader 2.2、WinDjView 5、CAJViewer 7均不支持此功能。
裁边是ComicsViewer的基本功能之一,UnicornViewer从v0.12开始引入,不过在ComicsViewer中是按照像素进行裁边,有时候会有点问题,所以在UnicornViewer中改成按百分比裁边。不论是ComicsViewer还是UnicornViewer,都只在显示的时候进行裁边,对原始图像文件不会有任何影响,因此可以放心使用。

转载于:https://www.cnblogs.com/stronghorse/p/4913370.html

连续翻页浏览器面临的共同问题相关推荐

  1. kindle PC端有没有办法连续翻页?

    没有 我给他们了反馈: PC版的kindle阅读器能设置程滚动翻页吗? 该功能从2015年,就有用户需求,现在都2021年3月28日10:10:55了,6年多了,你们开发这个功能很难嘛? 请把客户当人 ...

  2. vue element序号翻页连续排序

    type="index" :index="indexMethod"// 序号翻页连续排序indexMethod(index) {return (this.cur ...

  3. vue中el-table翻页序号连续

    一.需求: 需要在el-table中有一列是序号,且翻页时,序号要连续,且删除当前行时,序号需要从后往前递补:且这个序号不是通过后端返回的数组中取到的对应字段,需要纯前端处理 二.解决方案 方案一: ...

  4. iphone阅读模式翻页_iPad的safari浏览器阅读模式如何翻页

    在iPhone.iPad等中,Safari是浏览器是iOS自带的一款优秀浏览器,相比什么UC.QQ浏览器等体验更为出色,正是因为如此,果粉们基本很少使用第三方浏览器.今天,小编主要分享一个Safari ...

  5. 图文翻页-兼容IE8和Chrome浏览器

    在线测试 打包下载 图文翻页-兼容IE8和Chrome浏览器

  6. DIY chrome浏览器漫画翻页插件

    最近迷上了火影忍者,在爱漫画网站上看的漫画版.每看完一页都要用鼠标点一下翻页键,时间长了觉得有些不爽.要是按上下键看漫画时,按一下旁边的键,就可以翻到下一页,会舒服不少. 用的是chrome浏览器,装 ...

  7. python漫画阅读器 漫画网站只能左右翻页,没法上下滚动连续下拉式观看且广告多体验差?因涉及“版权不明”, 审核未通过

    原博文python漫画阅读器 漫画网站只能左右翻页,没法上下滚动连续下拉式观看且广告多体验差?因涉及"版权不明", 审核未通过 (偶尔更新常来看看啊)2022.1.18更新 改为通 ...

  8. scrapy模拟浏览器翻页爬取智联

    智联爬取中,页码的数字和url是不匹配的,因此盲目的拼接url会造成错误,因此可以采用模拟浏览器爬取网页 要模拟浏览器需要知道scrapy流程,简图如下: 这里只是简单的写一些伪码,设计的数据清洗部分 ...

  9. 基于selenium模拟浏览器爬虫JS-frame,搜索+爬取详情页+翻页

    基于selenium模拟浏览器爬虫JS-frame网站 课设中需要爬一个很神奇的网站Web Gallery,一开始看结构以为是很简单的那种,开始爬的时候才发现它的结构之奇葩--所有东西都集成在一个ht ...

  10. 1【计算机专业必备基础知识】《计算机体系结构基础》(胡伟武)速读笔记(上篇)“这位同学,请描述一下PPT完成翻页时电脑软硬件是如何协作的?”

    前言 在学习计算机的这几年,一直有些很基础的问题困扰着我,C++.Java照写,但总感觉没有底气.本科学过操作系统.数据结构.微机原理.数字电路,(不知是不是因为我给忘干净了还是咋的,)平时遇到学术道 ...

最新文章

  1. apache httpclient 工具类_HttpClient
  2. 指数加权平均与RmsProp(转载+自己总结)以及Adagrad
  3. 10个优秀的 Web UI 库/框架
  4. python 单例模式的四种实现方法
  5. 行!看到抖音上Python程序员晒得工资条,我沉默了......
  6. jQuery滚动监听插件Waypoints
  7. Mui a 链接失效的解决办法
  8. 今日头条把微信按在地上摩擦
  9. mysql 5.1 到 mysql 5.2的出现的索引BTREE问题 use near 'USING BTREE
  10. suse12 sp4,sp5镜像资源分享
  11. 李宏毅2020机器学习深度学习(完整版)国语课程PPT
  12. 公众号菜单栏如何添加设置一键导航?
  13. AnimationController
  14. 4.3 期货每日早盘操作建议
  15. layui官方文档镜像站
  16. elasticsearch xpack license过期
  17. 《大唐豪侠》架构开发纪实
  18. DAB-DETR: DYNAMIC ANCHOR BOXES ARE BETTER QUERIES FOR DETR翻译
  19. 计算机编程技术的历史变迁以及未来发展
  20. 普通高等学校本科专业目录(2020版)pdf下载

热门文章

  1. Java ee 数据链路层重点协议 以太网
  2. flashfxp中文下载,5步掌握flashfxp中文下载软件的使用技巧
  3. 50个表单功能,验证,安全和自定义化的jQuery插件
  4. 啊,原来申请数字证书这么简单
  5. [转]页面回传与js调用服务器端事件
  6. 从PCC到MIC,理解变量之间的相关性
  7. SOS关于组建星际物质研究自愿者协会的倡议
  8. 基于QT的英文文献的编辑与检索系统的实现
  9. npm与yarn常用命令
  10. linux sox用法 播放,SoX——linux终端播放音频文件