当前位置: 首页 > news >正文

【Python】 切割图集的小脚本

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)

结语:

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

http://www.dtcms.com/a/306834.html

相关文章:

  • 【WRF-Chem第五期】自定义字段配置 iofields_filename 详述
  • 红绿多空策略
  • 全包圆230㎡整装案例亮相,空间美学演绎东方韵味
  • Netty是如何解决epoll CPU占用100%问题的
  • 借助 Wisdom SSH AI 助手构建 Linux 容器化开发流水线
  • 构建智能体(Agent)时如何有效管理其上下文
  • 2022 年 NOI 最后一题题解
  • 【Spark征服之路-4.3-Kafka】
  • CMS框架GetShell
  • 2020 年 NOI 最后一题题解
  • Go语言核心知识点补充
  • 【Unity】在构建好的项目里创建自定义文件夹
  • 2.3.1-2.3.5获取资源-建设团队- 管理团队-实施采购-指导
  • solidity 中 Eth 和 Usd 到底如何转换
  • 技术人生——第17集:京城首发,AI叩问
  • C++中sizeof运算符全面详解和代码示例
  • 15.网络编程:让程序学会上网
  • 【读书笔记】设计数据密集型应用 DDIA 第二章
  • RPA软件推荐:提升企业自动化效率
  • 无线土壤水分传感器的结构组成及工作特点
  • Vue 3 入门教程 3- 响应式系统
  • Qt知识点3『自定义属性的样式表失败问题』
  • 飞算JavaAI自动设计表结构:重塑数据库开发新范式
  • 土木工程相关优化的C++实践
  • 《Spring Security源码深度剖析:Filter链与权限控制模型》
  • GitHub 上 Star 数量前 8 的开源 MCP 项目
  • <RT1176系列13>LWIP概念介绍
  • CSS 常用属性汇总
  • Thales靶场通关攻略
  • 【25-cv-08323】Keith携Olha Moroz13张版权画发案!