我新鮮出爐的 plist 圖集拆圖工具!github

2021-02-15 Creator星球遊戲開發社區

這些年,我一直在使用 JavaScript 、CocosCreator做開發,只要是他們不能解決的,我都不太願意去弄,或者說是不太情願去做。真的是手中有把錘子,看什麼都是釘子,越是熟悉一樣東西,越容易被思維定式給束縛,難以成長!

前段時間,我在嘗試學習 Python,想用來做點什麼,一直沒想好。我必須得學以致用才行,不然過兩天又忘記了,但這次機會來了!

前兩天,有位老朋友找到我,尋求 Cocos 圖集的裁圖工具,我順手給了一個 Windows 版本的 PngSplit.exe,我曾經用過多次感覺還行!


小知識:初學的夥伴可能還不清楚,什麼是「圖集」

圖集通常是使用 TexturePacker 這個工具,將多張小的碎圖合併,導出生成一個 png 文件與同名的 plist 文件。

TexturePacker Mac版

遊戲引擎通過解析 plist 文件,獲取對應 png 圖片上的子圖,還原碎圖。通過圖集可以減少文件體積,提高文件加載速度,更重要的是他能減少 Drawall 提升渲染效率!

但,我剛給了朋友後,想到如果是 Cocos 格式的圖集是有 plist 文件的,通過 plist 可以完美換原之前的碎圖,但使用 PngSplit 拆分一些有透明像素的幀動畫圖片就不行了!

PngSplit 導出的子圖有兩大缺陷:

無法還原文件名,特別是序列幀文件,文件順序是亂序的;這樣生成的資源,要重新製作動畫難度非常之大,還需要花更多的時間。想到這裡,有點點興奮,我拿起 Python 開幹!代碼大概分成兩大部分:解析 plist 文件,解析出子圖在圖集中的矩形位置

大的思維有了,解析 plist 應該是有對應的工具庫的,我也是 Python 小白 面向百度編程 絕對是不能不掌握的技巧

輸入:python3 plist 解析


出來的大部分是用 plistlib 這個庫,而且是 Python 自帶的!非常好,第一個問題有解了,先不管細節,再看第二個問題!

繼續在百度上搜索:python3 圖片處理


有一個名為 PIL 的庫顯示的最多,簡單了解一下:

python image library 圖像庫,處理圖像功能,該庫提供了廣泛的文件格式支持,如JPEG、PNG、GIF、等,它提供了圖像檔案、圖像顯示、圖像處理等功能。

注意安裝時,使用的是:pip install pillow

大概花了半個小時,簡單了解了一下 PIL 的功能,其中的 Image 模塊正是我需要的 :

# 從當前圖像返回矩形區域的副本
# box是一個4元祖,定義從左、上、右、下的像素坐標
Image.crop(box)

有了大概的了解,就開始真正的動手了,剛開始真的很不習慣,經常範錯,比如:

好兩次我想放棄了,明明知道怎麼做,就是弄不好,語法出錯,運行報錯!

最氣人的是,我寫出的代碼,到處是波浪線,我用的是 PyCharm 這個神器級別的IDE。

還好我堅持完成了第一個版本,也就 50 多行代碼,拆分的圖片還不帶透明區,因為我只會使用Image.crop 這個函數,剩下的我還不會。

休息了兩天,再次撿起來,我又找到兩個 Image 對象上的方法:

# 翻轉、旋轉圖像
image = image.transpose(Image.ROTATE_90)

# 將image圖像粘貼base圖像中
# box參數我給的是偏移2元組
base.paste(image, (offset_x, offset_y))

功能搞定生成圖片非常完美,還原了 plist 中的文件名、原始大小、透明區域偏移,整個代碼加上注釋也不到100行。

最後,我還研究了一下 Python 的代碼規範,與 JS、TS 完全不是一個門派的。Python 的變量名、函數名都是用小寫,代碼之間用下劃線隔開,感覺是回到了讀書時用的 C 語言的年代

終於整個代碼清爽起來了,而且我還加了不少注釋。

最後版本

雖然東拼西湊將功能實現了,但我總覺得怪怪的,第一次用 Python 做個開源小工具求大神們指點,還有那些可以改進的地方,也希望這個工具腳本能幫助到大家,節省、省力、省錢!

github倉庫地址,您也可以通過【閱讀原文】跳轉連結!
https://github.com/ShawnZhang2015/tp-png-split.git 

原創不易,碼字不易,感謝點讚分享,願我們一起共同成長!


1. 2020社區最新教程精華700+頁PDF!
2. 騰訊課堂Creator零基礎修仙實戰上線啦!
3. 遊戲換皮被默許,微信後臺竟然支持代碼授權
4. NativeAPI手機原生功能調用接口豐富
5. Creator全自動代碼生成器來襲!
6. 臥槽,一不小心我成副業案列了!

相關焦點

  • 我在GitHub上又找到一個堪稱神器的命令行工具
    來源丨開源最前線(ID:OpenSourceTop) 猿妹編譯編譯自:https://github.com/github/semanticGitHub上的實用工具還是挺多的,這不,又讓我找到了一個堪稱神器的支持多語言的命令行工具——Semantic,Semantic是一個解析,分析和比較多種語言原始碼的命令行工具,也是一個Haskell
  • 新鮮出爐:GitHub最受歡迎免費課程(深度學習、TensorFlow等)
    Ada 開發者學院的 Jump Start Curriculum(223 星)https://github.com/Ada-Developers-Academy/jump-startADA 的 Jump Start Curriculum 可幫助學生熟悉他們日後將在大型項目中所需的工具、概念和詞彙。每節課都從說明學習目標開始,因此學生可以明確知道投入項目之前需要掌握的東西。
  • GitHub上的命令行工具
    作者:開源最前線(ID:OpenSourceTop) 猿妹編譯 https://github.com/github/semantic
  • 2019年6月份Github上最熱門的JavaScript開源項目!
    天天在用錢來源:開源最前線(ID:OpenSourceTop) 猿妹整理6月份GitHub上最熱門的JavaScript開源項目新鮮出爐這是一個直觀的算法可視化工具,你可以自由選擇自己想學習的算法,每個算法它都清晰描繪了其原理和運作過程https://github.com/haotian-wang/google-access-helperStar
  • 逆向Notability文件格式,實現批量導入漫畫源碼圖到蘋果ios
    我日常喜歡畫些有關編程的漫畫。 在上周四,我買了一個iPad 和Apple Pencil,因為Apple Pencil是一個非常好的繪圖工具。我開始使用iPad的Notability應用程式,他看起來非常不湊。但是我遇到了一個不爽的事情:我使用的Android應用程式中有很多的原始圖片,但是用的格式是Squid!
  • cocos 使用圖集 - CSDN
    對於圖像資源,為什麼要用圖集,cocos官網的解釋:1.合成圖集時會去除每張圖片周圍的空白區域,加上可以在整體上實施各種優化算法,合成圖集後可以大大減少遊戲包體和內存佔用2.多個Sprite 如果渲染的是來自同一張圖集的圖片時,這些 Sprite 可以使用同一個渲染批次來處理,大大減少 CPU 的運算時間,提高運行效率。
  • cocos 自動圖集 - CSDN
    對於圖像資源,為什麼要用圖集,cocos官網的解釋:1.合成圖集時會去除每張圖片周圍的空白區域,加上可以在整體上實施各種優化算法,合成圖集後可以大大減少遊戲包體和內存佔用2.多個Sprite 如果渲染的是來自同一張圖集的圖片時,這些 Sprite 可以使用同一個渲染批次來處理,大大減少 CPU 的運算時間,提高運行效率。
  • 激發雲力量--打造我的雲端工具集
    我的雲端工具集都是基於後端 PHP 、前端 h5 實現。 php 可以和 apache 或 nginx 配套使用。,但:生成二維碼html5 中,調用這個 js 即可http://jeromeetienne.github.io/jquery-qrcode/<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js">
  • GitHub 開源官方命令行工具登頂 TOP1,5 分鐘極速上手!
    作者 | Nabil Nalakath譯者 | 彎月,責編 | 唐小引頭圖 | CSDN多年來,作為全球最受歡迎的代碼託管平臺 GitHub 竟然一直沒有提供官方的 CLI 工具。畢竟 GitHub 是開放原始碼項目中最常用的平臺,難免讓人感到驚訝。
  • 快手怎麼髮長尺寸圖片和圖集 弄豎長圖和圖集方法圖文教程
    快手怎麼髮長圖和圖集和圖集教程,快手發布長圖圖集方法,很多用戶還不知道快手怎麼髮長圖和圖集,今天小編就給大家詳細介紹下長圖和圖集圖文教程吧!  相信經常玩快手的小夥伴,一定都再快手中看到過超長的圖片,或是那種好幾張圖片製作而成的圖集。  這種視頻是怎麼製作出來的呢?想要知道的小夥伴可以跟小編一起來看看哦!
  • GitHub官方開源新命令行工具
    開源最前線(ID:OpenSourceTop) 猿妹綜合整理近日,GitHub 發布命令列工具 (Beta) 測試版,官方表示,GitHub CLI提供了一種更簡單、更無縫的方法來使用Github。這個命令行工具叫做GitHub CLI,別名gh。現在,你就可以在macOS、Windows和Linux上安裝GitHub CLI。Github也會通過用戶反饋,在之後的版本中添加更多的功能。
  • 1月份Github上熱門Python開源項目!
    1月份GitHub上最熱門的Python開源項目排行已經出爐啦,一起來看看上榜詳情:1. fastapihttps://github.com/tiangolo/fastapiStar 9051FastAPI 是一個 Rails 庫用來快速查詢相互依存的數據集合併返回時候人類閱讀的
  • 6月份Github上熱門的開源項目
    6月份GitHub上熱門的開源項目排行已經出爐啦,一起來看看上榜詳情吧!CPlusPlusThingshttps://github.com/Light-City/CPlusPlusThingsStar 5402這是一個適合初學者從入門到進階的倉庫,解決了面試者與學習者想要深入 C++及如何入坑 C++的問題。
  • Github上JavaScript開源項目排行
    開源最前線(ID:OpenSourceTop) 猿妹整編轉載請註明來源作者GitHub上最熱門的JavaScript開源項目排行已經出爐啦https://github.com/clouDr-f2e/rubick Star 1597基於 electron 的開源工具箱,自由集成豐富插件。
  • 風景圖集:江西九江廬山風景圖,值得收藏哦!
    風景圖集:江西九江廬山風景圖廬山是一座崛起於平地的巍巍峨峨的孤立形山系。風景圖集:江西九江廬山風景圖廬山的地貌景觀較為特殊,是一種多成因複合地貌景觀,依次由斷塊山構造地貌景觀、冰蝕地貌景觀、流水地貌景觀疊加而成。風景圖集:江西九江廬山風景圖300萬年之後的第四紀大冰期來臨之時,廬山曾產生過4次冰期,此種海洋性山麓冰川的刨蝕作用特別強烈,在高大的斷塊山基礎上,形成了一系列冰蝕地貌景觀,刃脊、冰鬥、冰窖、U形谷、角峰等。
  • GitHub 上的十一款熱門開源安全工具 - OSCHINA - 中文開源技術...
    我幾乎想不出有哪種軟體或者固件無法發揮Metasploit的出色實用性。」項目連結:https://github.com/rapid7/metasploit-framework項目連結:https://github.com/aol/moloch
  • 我在GitHub上找到了這些遊戲項目,刺激!
    首先,我們來看一下這張圖,可快速了解這篇文章中所涉及到的 23 個關於遊戲方面的開源項目。Games on GitHub這個開源項目作者收集了託管在 GitHub 上的開源遊戲以及跟遊戲相關的項目列表,所含的項目類型眾多,遊戲種類包括教育類、瀏覽器類等,還包括一些開源的遊戲引擎等等;
  • GitHub 徽章製作
    badge如上圖所示1.第一個徽章即 Github 自帶的 workflow 提供的持續集成(CI)和持續部署(CD), 官方稱之為 Actions, 圖示顯示為 CI, CD 是否通過2.第二個徽章即 Codecov 是一個測試結果分析工具, 圖標顯示測試覆蓋率.3.第三個徽章即 shields.io 一個可以自定義徽章的網站4.第四個徽章即 goreportcard