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

相关文章

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

Java高效实现Word转PDF的完整指南

《Java高效实现Word转PDF的完整指南》这篇文章主要为大家详细介绍了如何用Spire.DocforJava库实现Word到PDF文档的快速转换,并解析其转换选项的灵活配置技巧,希望对大家有所帮助... 目录方法一:三步实现核心功能方法二:高级选项配置性能优化建议方法补充ASPose 实现方案Libre

使用Python提取PDF大纲(书签)的完整指南

《使用Python提取PDF大纲(书签)的完整指南》PDF大纲(Outline)​​是PDF文档中的导航结构,通常显示在阅读器的侧边栏中,方便用户快速跳转到文档的不同部分,大纲通常以层级结构组织,包含... 目录一、PDF大纲简介二、准备工作所需工具常见安装问题三、代码实现完整代码核心功能解析四、使用效果控

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe