天天看點

将超長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格式的圖檔,未像第四次失敗時那樣發生位置偏移,二清晰度也與解決方法二平分秋色。