android pdf框架-7,白边切割

2024-03-10 20:44
文章标签 android 框架 pdf 白边 切割

本文主要是介绍android pdf框架-7,白边切割,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片的切边操作有时是比较有用的.看着舒服多了,页面间的空白如果比较大的图片在显示上,需要缩放,缩放后通常滚动会有偏移.

这里先说算法思路.

列表与切边

在解析列表中每一页,先解析白边,得到后,再去解码图片,最终显示.

对于分块加载的处理就比较麻烦了.对于recyclerview中使用单页面一个图片还是相对容易的多的.

由于切边算昂贵的操作,可以缓存在内存中,甚至可以存储在文件中,下次读取pdf后,可以直接把切边的数据读出去.

切边法有两个操作

直接原图切边与缩略图切边

原图的好处就是切的准确度高,但太大,效率低.

缩略图的好处就是速度快,准确度略低.

普通切边法

将图片二值化,然后从左,上,右,下开始扫描,扫描后得到的白边范围.

缩略图切边法

先生成一张缩略图,比如200*200 范围内的,然后用上面的切边法,去把空白区算出来.然后再把缩略图与原图的比例,与切边后的rect计算出原图应该切多少.

切边优化

对于缩略图,有时还是太慢.一张图如果全扫描也要10毫秒,这不太能接受,尤其如果是在滚动过程中的切边,然后再渲染图片,10毫秒接近图片解码的一半时间了,整个切边到渲染图片到列表中将达到40毫秒左右,也不是不能接受,pdfium这个库比mupdf的解码也是慢这么多.

切边算法优化
二值化算法优化
二值化,0,1法

普遍的是使用像素0与255,就是非0像素,白色的直接设置为255,0像素不变.这种方法容易识别图片产生错误.比如我解析三国演义的非扫描版pdf,它是带背景色为黄色的pdf,就无法正确识别它.

二值化,固定阈值法

就是固定的阈值,比如100,小于它都设置0,大于都设置255.其它与上相同.

二值化,双固定阈值法

设置两个阈值,小于下限,大于上限设置0,在中间的设置255,其它同一法.

无论哪种,最终要的是能切好白边,实际中,二三两种会比较有优势.

当然解析时,mupdf已经不支持565的图片,pdfium这个还可以,用它可以略内存,直接忽略alpha通道了.

扫描算法优化

对于切边的二值化算法完成后.进入切边操作.

直接全图扫描

整个缩略图二值化后的图片直接从左,上,右,下,分别扫描,直到找到非白区,返回结果.

这种操作就是耗资源多点,因为已经是缩略图了,速度还是能接受的.

区域扫描法

区域扫描法,这算不上什么算法,算是一种图片渲染策略,在上面的扫描方案基础上再优化.

比如一张图片,我最多切去2/3,那么我从左边向下扫描,可以设置扫描量最多是1/3,从右向左,最多1/3.那么左右方向可以省1/3的时间.

同理,上下扫描一样.

扫描与二值化同时操作

在上面的扫描方案中,不是事先准备好所有的二值化数据.针对的是缩略图原图操作

步骤:

从左开始,按行扫描,但一次扫描4行(多少行可修改),然后把这4行的数据进行二值化操作,然后确认空白区.如果是空白的,继续下一轮,直到扫扫描到非空白区.

其它方向同理.

二值化的只是部分区域,我扫到哪里就处理到哪里,可以省更多的时间,资源.

因为对整张图片二值化,也是耗时操作,很多页面没有必要这样处理,因为多数图片的内容区是有东西的.多数可能只扫描5行就得到了结果,剩下的100行都不要处理.尤其对于左,右,上这三边,可以省很多资源.对于下往上扫,就要看内容区多少了.

最终的耗时,从10毫秒减少到1毫秒.

这里借用一下别人的二值化文章,感谢.Android数字图像处理之二值化_android 图片二值化-CSDN博客</

这篇关于android pdf框架-7,白边切割的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/795445

相关文章

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma