# Python中如何將 SVG 轉換成 PNG 在寫搶票程式的過程中 有遇到處理圖形驗證碼的問題 此時需要先將圖片抓下來, 再透過`openCV`, `numpy`, 以及`OCR`等技術將文字給輸出 然而在windows上, 做這件事情會有點複雜 所以將過程記錄下來 先附上相關資訊 OS: Windows 10 22H2 Python: 3.11.4 # CairoSVG 這次是使用`CairoSVG` 首先安裝套件 ``` pip install CairoSVG ``` 接著寫程式 ```python= import cairosvg svg_file_path = "your svg path" png_file_path = "your png path" cairosvg.svg2png(url=svg_file_path, write_to=png_file_path) ``` 當你執行他 沒意外會遇到以下錯誤 ``` OSError: no library called "cairo-2" was found no library called "cairo" was found cannot load library 'C:\Program Files (x86)\GTK2-Runtime\bin\libcairo-2.dll': error 0xc1 cannot load library 'libcairo.so.2': error 0x7e. Additionally, ctypes.util.find_library() did not manage to locate a library called 'libcairo.so.2' cannot load library 'libcairo.2.dylib': error 0x7e. Additionally, ctypes.util.find_library() did not manage to locate a library called 'libcairo.2.dylib' cannot load library 'C:\Program Files (x86)\GTK2-Runtime\bin\libcairo-2.dll': error 0xc1 ``` 沒意外應該是缺少了一些驅動, 所以只有安裝套件是不夠的 # 怎麼解決? 要先進來這個網站 https://sk1project.net/uc2/download/ 接著選擇你作業系統的.msi檔 我的是64位元, 所以選擇`uniconvertor-2.0rc5-win64_headless.msi`下載 然後就安裝 接著設定環境變數 打開windows 10的搜尋功能(放大鏡) 輸入`編輯系統環境變數`並打開 ![](https://hackmd.io/_uploads/H1nXNIcf6.png) 選擇`進階`頁籤, 再點擊`環境變數` ![](https://hackmd.io/_uploads/B1J9r89zp.png) 點開後會進入以下畫面, 在`系統變數`的位置找到變數名為`Path`的欄位 點他一下然後按編輯 ![](https://hackmd.io/_uploads/B1Wm8LcG6.png) 接著進入以下畫面選擇瀏覽 ![](https://hackmd.io/_uploads/BkTaIIqz6.png) 選擇以下路徑後並確定 ``` C:\Program File\UniConvertor-2.05rc5\dlls ``` 最後就依序關閉視窗, 重新啟動電腦 這步很重要, 一定要重新啟動才會生效 再次執行程式應該就沒問題了 這邊開始印象就有點模糊, 反正我是都加了 如果還是不行, 可以試試依據前面的錯誤訊息 將該路徑`C:\Program Files (x86)\GTK2-Runtime\bin\`也加到環境變數中 再次重啟電腦應該就可以了 # 結論 其實這篇主要是用來記錄除錯的過程而不是如何使用這個module 因為找了老半天實在找不太到怎麼除錯 不然轉換本身並不是太難, GPT4就可以幫你生成程式了 當然SVG本身是要完整的格式就是了 但以這篇遇到的狀況來說, AI似乎沒辦法很好的除錯 所以就把過程寫一下 # 參考資料 最後附上參考資料 1. https://stackoverflow.com/questions/59481394/django-oserror-no-library-called-cairo-was-found-on-windows 2. https://sk1project.net/uc2/download/