首页 > 其他分享 >将超长emmx格式的图片(脑图)转为png/jpg格式方便在手机上查看(失败过程+三种解决方案)

将超长emmx格式的图片(脑图)转为png/jpg格式方便在手机上查看(失败过程+三种解决方案)

时间:2022-11-01 21:07:49浏览次数:47  
标签:svg jpg 脑图 失败 格式 方法 png 图片


故事背景:由于本人整理Python3爬虫的知识体系,足足写了三米多长(通过将手机放大图像字体到刚好看着舒服,然后往下滑动图片测出此长度)

将超长emmx格式的图片(脑图)转为png/jpg格式方便在手机上查看(失败过程+三种解决方案)_经验分享

失败第一次:我将图片用MindMaster(我画此脑图的软件)导出png格式后,一旦放大,图片不堪入目,因此,此种png格式的导出,对于此长图来说,图片质量太差,于是这种方法行不通。
失败第二次:于是我便想到了svg矢量图,这种图像并不会随着图片的放大而失去图片质量,而当我直接导出svg格式,在手机上无法直接查看,于是这种方法也行不通。
失败第三次:而导出pdf格式,又无法像保存到手机相册一样不易丢失。于是我开始查找将pdf格式转为png格式的方法,突然发现IE9浏览器竟然可以直接右键pdf页面将其保存为png格式,IE浏览器果然是一个奇特的工具,但当我兴高采烈地点下保存后,提示:意外地调用了方法或属性访问。我初步怀疑是IE的健壮性不够强,部分不兼容的地方出错后导致报错,于是,再次失败了。
失败第四次:我突然灵机一动,先将图片导出为不会损失图片质量的svg矢量图的格式,然后用格式工厂工具将其转为png格式不就可以了吗,然而,当我用此方法操作后,发现,svg格式的原图片是正常的,但将其转为png格式后,所有文字内容发生了位置偏移,而我原本插入其中的部分示例图片也没被转到png,取而代之的是一块空白区域的填补,我的猜测是其中一部分原因可能是由于svg对于矢量图的部分内部算法与格式工厂不兼容导致的,因此,这种方式也行不通,再次失败。
失败第五次:在经过前几次失败后,我突然发现我可是学计算机的呀,为什么不是是Python呢,果然Python有一个名叫cairosvg的第三方库,当我运行测试这个库后,发现报错:OSError: no library called “cairo” was found。(解决方案在下方)
最终问题随之产生:如何将emmx格式的脑图转为同样清晰度的png格式图片呢?

在经过我一番思考后,决定跳出之前的思维模式,重写想一想解决方法,于是第一个想法便是借助第三方网站的技术,第二个想法便是滚动截屏后进行图片边缘裁剪,于是便有了以下两种解决方法的诞生。

解决方法一(最简单)
利用第三方网站Speedpdf,那里提供了pdf的各种格式转换,我在其中找到了jpg格式的转化,由于它和png的差别也不是特别大,于是便在此网站内进行了格式转换,最终导出图片后,其清晰度可以接收,所以,这算是一种最快速的方法了。
解决方法二(组合多种软件而巧妙解决):这算是一种比较清奇的解决思路,将emmx格式的脑图用MindMaster打开,借助FSCapture软件的滚动截屏功能(将界面自动滚动,间断性截取整个视口的图片,最终自动拼凑),得到完整的png图片,清晰度几乎没有损失,之后用PS将图片上下右三个方向的边缘进行裁剪,将图片保存为tiff格式(因为此图片特殊无法直接保存为png格式),接着用格式工厂工具将图片转为png格式,而得到最终png格式的图片。
解决方法三(针对第五次失败的解决方案):安装gtk2-runtime-2.24.32-2020-07-15-ts-win64 (1).exe后,运行cairosvg库则不再报错,于是便可以写代码了:

import cairosvg

svg_img = 'Python爬虫知识体系.svg'
png_img = 'result.png'
cairosvg.svg2png(url=svg_path, write_to=png_path)

运行后,便得到了png格式的图片,未像第四次失败时那样发生位置偏移,二清晰度也与解决方法二平分秋色。

解决方法一、二、三分析:
方法一优点在于更快,更便捷,不需额外装软件、配置环境;
方法二优点在于清晰度高;
方法三优点在于清晰度高,仅需额外装gtk2和cairosvg库,相对简便。

总结:这虽然并不是一个代码报错问题,也不是一道高难度的数学题,但在解决实际问题的过程中,对于独立思考、如何面对失败、解决问题的锻炼都是一致的。


标签:svg,jpg,脑图,失败,格式,方法,png,图片
From: https://blog.51cto.com/u_15856491/5814994

相关文章

  • 11Jmeter之优化jenkins上html报告格式
    问题:当在jenkins上查看HTML报告时,发现报告格式不美观!  解决一:临时解决方法1、进入Manage Jenkins->Scriptconsole,输入如下命令并进行执行。System.setPropert......
  • 常用设置时间格式
    fromatTime(val){ constdata=newDate(val) constYear=date.getFullYear() letMonth=date.getMonth()+1 Month=Month<10?'0'+Month:Month letDa......
  • yml/yaml--文件格式/配置文件--用法/写法
    原文网址:yml/yaml--文件格式/配置文件--用法/写法_IT利刃出鞘的博客-CSDN博客简介说明     YAML 是一种简洁的非标记语言,文件名后缀为.yml,java中经常用它描述......
  • MySQL InnoDB 行记录格式(ROW_FORMAT)
    1 问题描述公司某游戏日志监控报警,查看日志显示如下错误:Rowsizetoolarge(>8126).ChangingsomecolumnstoTEXTorBLOBorusingROWFORMAT=DYNAMICorROWFORMAT=......
  • 组态王导出的点表 与 excel 格式的相互转换
    组态王(KingView)支持点表的导入导出,其格式为xml.这种格式适合编程读写,但并不方便人工阅读.习惯用excel编写点表,于是,用python实现了将组态王的xml格式的点表转换为c......
  • html-文本格式化标签
    <p>段落标签</p>换行标签<br/> 我是<strong>加粗</strong>的文字  <br/>我是<b>加粗  </b>的文字  我是<em>倾斜</em>的文字<br/>  我是<i>倾斜</i......
  • js图片格式转换(File、blob、二进制)
    一、File转Blob​​MDN文档createObjectURL​​​​​​<buttonclass="btn"onclick="openFile()">点我</button>functionopenFile(){varinput=document.createEle......
  • c# aveva marine 批量导出图纸到dxf格式
    获取图纸数据库查看代码publicstaticDictionary<string,List<DbElement>>GetDbElements(DbTypedbtype){Dictionary<string,List<DbElement......
  • golang日期格式转换
    在日常开发的过程中,经常会遇到前端或接口调用返回的时间格式的字符串转换为time格式落库的诉求,在转换格式的的过程中经常会遇到如下报错:问题的意思是,需要转换的字符串格式不......
  • PNG文件格式-笔记
    PNG注:笔记中拓扑图xmind源文件在其图片目录下什么是PNGPNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是替代GIF和TIFF文件格式,同时增加......