【Python】 切割图集的小脚本

Python 切割图片脚本

前言:

有短时间没写博客了,今天打算再写一篇MonoGame的教程,这篇是我再做我自己的2D 游戏项目的时候我需要一些已经切割好的图片但我得到图片是合在一起图集,这个脚本适合正在做2D游戏开发且不依赖于游戏引擎本身切割功能的开发者们。

步骤:

第一步:

安装Python,不需要下载PyCharm只需前往官网下载:
传送门

具体安装步骤网上都有。大家可以去看看其他博主的教程都说的非常不错!!!

第二步:

打开下载好的IDLE ,如下图,并创建新的脚本 (New File 或者 Ctrl + N)

第三步:

复制代码并保存

第四步:

在你所创建的脚本下创建output文件夹和准备好的图集并运行脚本就OK啦!!

注意:

再上述代码示例中大家仔细看以下第四行,这个切割是根据大家的需要修改的,我需要切割的是16 * 16的正方形瓦片,那么我就使用这个,但是如果你需要切割这个20 * 20 的瓦片那么大家自己修改,包括主函数中哪个文件名字和图片名都是可以自己适配的,具体的我的注释写的也很清楚

代码:

直接上代码,这个代码很简单大家稍微看一下基本就能实现这个功能,OK我也不多废话,这个大家直接拿走取用吧,也很简单,封装一下当个小工具用还是可以的。

javascript 复制代码
import os
from PIL import Image

def 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}")
        return
    except Exception as e:
        print(f"打开图集时出错: {e}")
        return
    
    # 获取图集尺寸
    width, height = atlas.size
    
    # 计算行列数
    cols = width // tile_size
    rows = height // tile_size
    
    # 计数器
    count = 1
    
    # 遍历每个小图
    for row in range(rows):
        for col in range(cols):
            # 计算切割区域
            left = col * tile_size
            upper = row * tile_size
            right = left + tile_size
            lower = upper + tile_size
            
            # 切割图集
            tile = atlas.crop((left, upper, right, lower))
            
            # 保存小图
            tile.save(os.path.join(output_dir, f"{count}.png"))
            count += 1
    
    print(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)

结语:

当然了这个非常简单,大家也可以根据自己的需要修改我的代码,如果大家着急用就

相关推荐
魔都吴所谓8 分钟前
【go】语言的匿名变量如何定义与使用
开发语言·后端·golang
骇客野人27 分钟前
使用python写一套完整的智能体小程序
开发语言·python
绿炮火28 分钟前
【MATLAB】(二)基础知识
开发语言·算法·matlab
你我约定有三44 分钟前
分布式微服务--万字详解 微服务的各种负载均衡全场景以注意点
java·开发语言·windows·分布式·微服务·架构·负载均衡
奈斯。zs44 分钟前
java面向对象高级02——单例类(设计模式)
java·开发语言·设计模式
山楂树の1 小时前
模型优化——在MacOS 上使用 Python 脚本批量大幅度精简 GLB 模型(通过 Blender 处理)
python·macos·3d·图形渲染·blender
88号技师1 小时前
2025年6月最新SCI-灰熊脂肪增长优化算法Grizzly Bear Fat Increase-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
cici158741 小时前
基于MATLAB的GUI来对不同的(彩色或灰色)图像进行图像增强
开发语言·matlab
玄月初二丶1 小时前
28. 找出字符串中第一个匹配项的下标
c语言·开发语言·数据结构·算法
奔跑吧邓邓子2 小时前
从0到1学PHP(十):PHP 文件操作:读写与管理文件
开发语言·php·文件操作