天天看点

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

故事背景:由于本人整理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格式的图片,未像第四次失败时那样发生位置偏移,二清晰度也与解决方法二平分秋色。