小游戏开发-巧用脚本将麻将游戏素材代码合成

[小游戏] 微信小游戏开发源码_教程_工具_资源最新集合 [小游戏资源] 微信小游戏开发资源目录   一、微信官方游戏教程 小游戏简易教程小游戏API大全小游戏开发工具   二、微信小游戏图标资源 Game-icons.net   三、微信小游戏图片资源 Super Game AssetGameDev Marketenvato marketGame Art PartnersKENNEY   阅读详情
需求:
1. 给定底部图片和麻将文字图片,将麻将文字图片合成到底部图片上
2. 麻将文字图片有 34 张,每张图片的大小不一样,需要根据底部图片的大小,将麻将文字图片缩放到合适的大小
3. 麻将文字图片需要居中显示在底部图片上
4. 合成后的图片需要保存到指定的目录下

实现:
1. 打开底部图片和麻将文字图片
2. 计算麻将文字图片的新高度,以保持比例
3. 将麻将文字图片缩放到新的大小
4. 创建一个新的图像,与底部图像相同大小
5. 将底部图片放入合成图像
6. 计算贴图位置(居中)
7. 将文字图像粘贴到合成图像上
8. 保存合成后的图片

注意:
1. 麻将文字图片的大小不一样,需要根据底部图片的大小,将麻将文字图片缩放到合适的大小
2. 麻将文字图片需要居中显示在底部图片上
3. 合成后的图片需要保存到指定的目录下

这是文字素材,只有麻将的文字

这是背景素材,选择一个背景+N个文字,结合生成如下图:

 

代码如下:

from PIL import Image
import os

# cocos游戏开发图片合成实例
'''
需求:
1. 给定底部图片和麻将文字图片,将麻将文字图片合成到底部图片上
2. 麻将文字图片有 34 张,每张图片的大小不一样,需要根据底部图片的大小,将麻将文字图片缩放到合适的大小
3. 麻将文字图片需要居中显示在底部图片上
4. 合成后的图片需要保存到指定的目录下

实现:
1. 打开底部图片和麻将文字图片
2. 计算麻将文字图片的新高度,以保持比例
3. 将麻将文字图片缩放到新的大小
4. 创建一个新的图像,与底部图像相同大小
5. 将底部图片放入合成图像
6. 计算贴图位置(居中)
7. 将文字图像粘贴到合成图像上
8. 保存合成后的图片

注意:
1. 麻将文字图片的大小不一样,需要根据底部图片的大小,将麻将文字图片缩放到合适的大小
2. 麻将文字图片需要居中显示在底部图片上
3. 合成后的图片需要保存到指定的目录下

'''

# 合成代码
def combine_image_with_background(text_image_path, background_image_path, output_image_path):
    # 打开底部图片
    background = Image.open(background_image_path).convert("RGBA")

    # 打开麻将文字图片
    max_width = 80  # 根据需要自定义的最大宽度
    text_image = Image.open(text_image_path).convert("RGBA")

    # 计算新高度以保持比例
    ratio = max_width / text_image.width
    new_height = int(text_image.height * ratio)

    text_image = text_image.resize((max_width, new_height), Image.LANCZOS)

    # 创建一个新的图像,与底部图像相同大小
    combined_image = Image.new("RGBA", background.size)

    # 将底部图片放入合成图像
    combined_image.paste(background, (0, 0), background)

    # 计算贴图位置(居中)
    text_x = (combined_image.width - text_image.width) // 2
    padding = 10  # 根据需要自定义上移的像素
    text_y = (combined_image.height - text_image.height) // 2 - padding

    # 将文字图像粘贴到合成图像上
    combined_image.paste(text_image, (text_x, text_y), text_image)

    # 保存合成后的图片
    combined_image.save(output_image_path, format="PNG")
    print(f"Combined image saved at {output_image_path}")



# 定义底部图片路径
background_image_path = "G:\BaiduNetdiskDownload\麻将素材\麻将素材\Mj_up_0.png"

# 假设您有 34 张麻将文字图片的路径
# text_images = [f"G:\BaiduNetdiskDownload\麻将素材\麻将素材\Dot_{i}.png" for i in range(1, 10)]

text_images = [f"G:\BaiduNetdiskDownload\麻将素材\麻将素材\Bamboo_{i}.png" for i in range(1, 10)]

# 示例用法
if __name__ == "__main__":


    # 输出合成后的图片路径
    output_directory = "G:\\BaiduNetdiskDownload\\麻将素材\\麻将素材\\new2"
    os.makedirs(output_directory, exist_ok=True)  # 创建输出目录,如果不存在

    for i, text_image_path in enumerate(text_images, start=1):
        output_image_path = os.path.join(output_directory, f"combined_image_{i}.png")
        combine_image_with_background(text_image_path, background_image_path, output_image_path)

用Qt开发小游戏《愤怒的小鸟》 Qt小游戏,愤怒的小鸟 阅读详情

相关推荐

[教你做小游戏] H5小游戏技术选型分析,低代码?小游戏框架?canvas或SVG?还能用React?

做个H5小游戏,用什么技术?本文提供了4种技术方案,列出了各自优缺点和使用场景,给出了方案决策树,助你下次想做小游戏时,选出最适合你的技术方案!

Hull Qin 4942

jpanel麻将自动打牌,碰牌,杠牌

代码】jpanel麻将自动打牌,碰牌,杠牌。

sinat_38424109的博客 2079

微信小游戏开发实战教程16-微信小游戏如何优化

这是微信小游戏开发实战系列的第16篇。 本节内容主要包括对微信小游戏进行优化的几个着手点以及具体的优化方式。 如果你没有任何的游戏开发经验,欢迎阅读我的“人人都能做游戏”系列教程,它会手把手的教你做出自己的第一个小游戏。 优化这件事儿我以前很少会在意,因为一直做手机游戏,手机硬件的更新速度非常的快,更快的计算能力,更强的渲染能力,更大的内存。这就导致了如果你不是做一个大型游戏的话,几乎是不太用考虑优化的。 直到我开始做微信小游戏,作为一个小游戏是有诸多的限制的,计算能力,渲染能力,尤其是对游戏大.

flyhorsejun的博客 4675

java写的麻将小游戏

过年回家在家打麻将,觉得蛮有趣的,就用java写了一个麻将小游戏(没有界面,只能在控制台玩)。 说明: 使用语言:java(jdk1.7) 开发工具:eclipse 项目集成:maven 1 麻将说明 1.1 方位说明(请注意“人”这个玩家的位置) 1.2 规则说明 可以碰牌、杠牌 不能吃牌 有东西南北中发白 有癞子 可以自摸,可以放炮 其余的麻将知识请自行百度 ...

天地炫舞的博客 2万+

“魔塔”小游戏素材开发指南

图像文件格式是决定图像质量和文件大小的关键因素,合理选择图像文件格式能够直接影响游戏的性能和加载速度。位图格式:常见的位图格式包括 BMP、PNG、JPEG 和 GIF。BMP 文件不包含压缩,适用于简单的图像,但文件较大。PNG 由于其优秀的压缩比和无损存储特性,在游戏中被广泛使用。JPEG 格式则适用于照片等复杂的图像,但压缩是有损的。GIF 格式主要用于简单的动画制作。矢量格式。

weixin_28809949的博客 400

原生微信小程序源码 - -麻将骰子:附详细教程

原生微信小程序源码 - -麻将骰子:附详细教程 原生微信小程序源码 - -麻将骰子:附详细教程

跳一跳j算法ava代码_麻将游戏算法深入解析及实现代码

麻将游戏算法深入解析及实现代码这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家。麻将是一种大家最喜爱的娱乐活动之一,相信所有人都有接触过。我写的这版算法,是可以吃,碰,杠,还有把牌摸完没有人胡时的皇庄和包听。是用控制台方式来表现的,什么?控制台?对,因为是算法的设计,所以用控制台来表现当然最简单了。当...

weixin_34409903的博客 508

微信小程序 麻将骰子:附详细教程 (源码)

微信小程序 麻将骰子:附详细教程 (源码)

【小程序】低代码+小游戏=小游戏可视化开发

近年来,低代码之风越刮越烈,就连我们公司内部也推出了自己的低代码平台。虽然笔者对低代码开发的应用前景嗤之以鼻,但是还是不得不承认低代码能在适合的场景下拥有一席之地。这不,小游戏的开发也可以低代码了!今天就带大家看看微信推出的小游戏可视化工具!...

伯子南的博客 1万+

基于unity3d开发的麻将棋牌游戏源码+文档说明(参考腾讯的欢乐麻将手游)

基于unity3d开发的麻将棋牌游戏源码+文档说明(参考腾讯的欢乐麻将手游)这个项目是使用unity开发的3d麻将棋牌游戏,参考腾讯的欢乐麻将手游制作。 目前开发的是游戏前端,对游戏采取了抽象,包括麻将机的抽象,各种打牌动作的解耦,使得在麻将机上的打牌摸牌,整理牌,等动作,都分离解耦,和具体的麻将规则不相关,以命令形式驱动各种动作,之后采用了消息驱动命令,驱动麻将机发动各种动作,在这个层次之上,再附加麻将规则层,按照一定的地方麻将逻辑,发送动作命令给麻将机,完成整个核心游戏逻辑,按这个框架,可以直接录制一场麻将的打牌录像,只要保存对应动作命令,再重放即可。 涉及到的相关技术和知识点包括了 游戏框架,图形学方面的内容,自写shader部分,unity模型的动作制作,ps贴图绘制,美术资源的获取,c#编程,3dmax制作模型,贴图,骨骼动画,资源管理,内存优化,基于unity3d开发的麻将棋牌游戏源码+文档说明(参考腾讯的欢乐麻将手游)基于unity3d开发的麻将棋牌游戏源码+文档说明(参考腾讯的欢乐麻将手游)基于unity3d开发的麻将棋牌游戏源码+文档说明(参考腾讯的欢乐麻将手游)

Unity3D((2018-2019)版本游戏源码(2018)麻将

Unity3D((2018-2019)版本游戏源码(2018)麻将提取方式是百度网盘分享地址

微信小游戏个人开发者如何盈利

微信小游戏,抖音小游戏,等H5小游戏非常的火,也处于流量的红利期,那么对于我们个人开发者而言我们能能否抓住微信小游戏的红利期,来实现人生的第一桶金,来实现睡后有收入呢? 今天小编带你来看下,个人开发者适合开发哪些游戏,怎么盈利? 希望能帮助到到家,赚钱了记得请我喝咖啡哈^_^。 什么类型的小游戏适合我们的个人开发者? (1)简单有趣的创意型小游戏,制作成本低,研发周期短...

voidinit的专栏 1万+

Ubuntu20.04配置PX4环境启动或编译jmavsim 出现的错误及解决办法

错误1:ant命令未找到

Iamsonice的博客 8855

AIGC助力小游戏开发全流程

摘要:H5小游戏开发全流程包括概念设计、素材制作、开发测试和部署五个阶段。AIGC技术可辅助单兵作战,在素材生成、代码编写和测试环节发挥作用,但需注意其创意偏差和结果核查。文章详细介绍了工程目录结构、AI工具推荐表(涵盖美术、音效、3D建模等)、主流大模型对比(2025年)以及部署建议(包括国内外主流平台)。同时强调AIGC目前仍需要人工把关,开发者需掌握任务分配和成果检查的能力。

ayusong870的博客 1785

一文读懂医疗大模型测评基准

面对市场上浩若星海的大模型,医院管理者如何采购适合自身场景的解决方案?如何选取好的模型作为基础进行课题研究?都是医院需要特别重视的问题。评测基准则benchmark是这些问题的重要解法,国内北京、上海、浙江已然开展了相关的标准化工作。

dz102的博客 1831

RTOS任务调度原理:高优先级任务为何在低优先级任务执行时无法响应

实时操作系统(RTOS)的核心在于其确定性的任务调度机制,它通过优先级抢占确保关键任务及时执行。其基本原理是调度器仅在特定调度点(如任务主动阻塞、中断退出时)运行,比较就绪态任务的优先级并切换上下文。这一机制的技术价值在于为嵌入式系统提供可预测的响应时间,广泛应用于工业控制、汽车电子和物联网设备等对实时性要求高的场景。当低优先级任务执行**长时间非阻塞运算**且无中断发生时,调度器无法被触发,导致高优先级任务虽处于就绪态却无法获得CPU,造成系统响应延迟。理解**任务状态机**与调度点,是优化实时性、避免此

weixin_33508411的博客 287

python编写小游戏详细教程,python编写小游戏的代码

PyGame 做游戏真的非常简单,只要会加载素材,就能做出一个还能看得过去的游戏。今天我们学会了怎么添加素材,怎么捕获键盘事件。PyGame 可以读取 Gif 图片,但是你会发现加载进来以后,Gif 不会动。

2301_79533350的博客 992

ISO15118-20协议测试实战:用Efficient XML库验证26条命令编解码(附完整代码)

本文分享了ISO15118-20协议测试实战经验,重点探讨了使用Efficient XML库对26条命令进行EXI编解码验证的过程。通过搭建测试环境、编写自动化程序并与官方工具链进行交叉比对,文章深入分析了4条命令编码结果不一致的原因,并提供了完整的排查思路与C代码示例,旨在帮助开发者确保电动汽车充电通信的协议一致性。

weixin_29284657的博客 108

python小游戏代码简单10行,python小游戏代码简单优快云

PyGame 做游戏真的非常简单,只要会加载素材,就能做出一个还能看得过去的游戏。今天我们学会了怎么添加素材,怎么捕获键盘事件。PyGame 可以读取 Gif 图片,但是你会发现加载进来以后,Gif 不会动。

阿发狗伪原创 1161

基于carsim与Simulink联合仿真的车辆换道轨迹规划与轨迹跟踪模型

PID_反步控制_滑膜控制三种四旋翼无人机轨迹跟踪控制算法仿真 附带对应的说明文档,提供建模过程与仿真结果文献(英文)➕PPT 描述:采用的同一种参考轨迹,都是三维仿真 三种控制方法: [1]PID控制、[2]反步控制、[3]滑膜控制(三个仿真模型) 每个仿真均应用了同一种轨迹路径,直接运行即可出三维图,可以实现四旋翼无人机轨迹的跟踪

2501_90804007的博客 1083

海洋与地质地理信息数据下载网站汇总集锦

各种海洋与地质地理信息数据集合

qq_36980284的博客 1267

python编写小游戏详细教程,用python制作一个小游戏

PyGame 做游戏真的非常简单,只要会加载素材,就能做出一个还能看得过去的游戏。今天我们学会了怎么添加素材,怎么捕获键盘事件。PyGame 可以读取 Gif 图片,但是你会发现加载进来以后,Gif 不会动。

gk12336的博客 2735

玩转Docker小游戏项目系列: Docker部署中国象棋网页小游戏

玩转Docker小游戏项目系列: Docker部署中国象棋网页小游戏

jks212454的博客 439

游戏开发、小游戏开发免费素材资源

1、首先熟悉官方的手册和api文档,文档还是比较详细,游戏的方方面面都涉及到了4、音频素材等5、2D,3D原画模型素材6、 可试玩广告(playable)打包工具。

枫 3604

一文吃透!C#上位机CAN总线通信开发:从协议解析到数据可视化

CAN底层协议仅定义了8字节数据的传输规则,实际业务需自定义应用层协议,实现多类型数据的有序传输,这是数据解析的核心。仲裁ID(16进制)数据长度(DLC)数据场格式业务含义解析规则0x0014字节0~3:温度数据温度采集(单位:℃)4字节→float类型(大端/小端需统一,如西门子PLC格式)0x0022字节0~1:转速数据电机转速(单位:r/min)2字节→short类型(Int16)0x0031字节0:bit0~bit7设备状态(8路开关量)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 843

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

《合成大西瓜》cocoscreator源码支持微信小游戏:开启您的游戏开发之旅

《合成大西瓜》cocoscreator源码支持微信小游戏:开启您的游戏开发之旅 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 基于cocoscreator的《合成大西瓜》源码,轻松开发微信小游戏。 项目介绍 在众多休闲小游戏中,《合成大西瓜》以其独特的魅力吸引了大量玩家。这款游戏不仅能够在微信平台上畅玩,还能在微博、抖音等社交平台上引发热烈讨论。为了帮助更多...

gitblog_06718的博客 1107

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 鸿蒙next开发第一课01.鸿蒙系统介绍-习题
下一篇: 鸿蒙next开发第一课03.ArkTs语法介绍-文章
互联网时光机
博客等级 码龄20年 400粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网时光机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值