Python 切割圖片腳本
前言:
有短時間沒寫博客了,今天打算再寫一篇MonoGame的教程,這篇是我再做我自己的2D 游戲項目的時候我需要一些已經切割好的圖片但我得到圖片是合在一起圖集,這個腳本適合正在做2D游戲開發且不依賴于游戲引擎本身切割功能的開發者們。
步驟:
第一步:
安裝Python,不需要下載PyCharm只需前往官網下載:
傳送門
具體安裝步驟網上都有。大家可以去看看其他博主的教程都說的非常不錯!!!
第二步:
打開下載好的IDLE ,如下圖,并創建新的腳本 (New File 或者 Ctrl + N)
第三步:
復制代碼并保存
第四步:
在你所創建的腳本下創建output文件夾和準備好的圖集并運行腳本就OK啦!!
注意:
再上述代碼示例中大家仔細看以下第四行,這個切割是根據大家的需要修改的,我需要切割的是16 * 16的正方形瓦片,那么我就使用這個,但是如果你需要切割這個20 * 20 的瓦片那么大家自己修改,包括主函數中哪個文件名字和圖片名都是可以自己適配的,具體的我的注釋寫的也很清楚
代碼:
直接上代碼,這個代碼很簡單大家稍微看一下基本就能實現這個功能,OK我也不多廢話,這個大家直接拿走取用吧,也很簡單,封裝一下當個小工具用還是可以的。
import os
from PIL import Imagedef split_atlas(atlas_path, output_dir, tile_size=16):"""將圖集切割成16x16的小圖并保存到output文件夾參數:atlas_path: 圖集文件路徑output_dir: 輸出文件夾路徑tile_size: 每個小圖的大小(默認為16x16)"""# 確保輸出目錄存在if not os.path.exists(output_dir):os.makedirs(output_dir)# 打開圖集try:atlas = Image.open(atlas_path)except FileNotFoundError:print(f"錯誤: 找不到圖集文件 {atlas_path}")returnexcept Exception as e:print(f"打開圖集時出錯: {e}")return# 獲取圖集尺寸width, height = atlas.size# 計算行列數cols = width // tile_sizerows = height // tile_size# 計數器count = 1# 遍歷每個小圖for row in range(rows):for col in range(cols):# 計算切割區域left = col * tile_sizeupper = row * tile_sizeright = left + tile_sizelower = upper + tile_size# 切割圖集tile = atlas.crop((left, upper, right, lower))# 保存小圖tile.save(os.path.join(output_dir, f"{count}.png"))count += 1print(f"切割完成,共生成 {count-1} 張小圖")if __name__ == "__main__":# 設置路徑atlas_path = os.path.join(os.path.dirname(__file__), "atlas.png")output_dir = os.path.join(os.path.dirname(__file__), "output")# 執行切割split_atlas(atlas_path, output_dir)
結語:
當然了這個非常簡單,大家也可以根據自己的需要修改我的代碼,如果大家著急用就