小游戏开发-巧用python代码实现图片的合成

liftword6个月前 (01-08)技术文章58


需求:
1. 给定底部图片和麻将文字图片,将麻将文字图片合成到底部图片上
2. 麻将文字图片有 34 张,每张图片的大小不一样,需要根据底部图片的大小,将麻将文字图片缩放到合适的大小
3. 麻将文字图片需要居中显示在底部图片上
4. 合成后的图片需要保存到指定的目录下
实现:
1. 打开底部图片和麻将文字图片
2. 计算麻将文字图片的新高度,以保持比例
3. 将麻将文字图片缩放到新的大小
4. 创建一个新的图像,与底部图像相同大小
5. 将底部图片放入合成图像
6. 计算贴图位置(居中)
7. 将文字图像粘贴到合成图像上
8. 保存合成后的图片
注意:
1. 麻将文字图片的大小不一样,需要根据底部图片的大小,将麻将文字图片缩放到合适的大小
2. 麻将文字图片需要居中显示在底部图片上
3. 合成后的图片需要保存到指定的目录下


以下为实例代码和素材:


麻将背景两套


麻将文字一套


合成效果如下


源代码:

from PIL import Image
import os

# cocos游戏开发图片合成实例


# 合成代码
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)

相关文章

Python自动生成手绘、证件照、九宫格...太炫酷了

Python像是叮当猫的口袋,几乎什么都能做,适合外行小白们去摸索学习,能极大的增加对编程的兴趣。有些工具用python来实现不一定是技术上的最优选择,但可能是最简洁、最面向大众的。介绍几个不错的处理...

怎么做到的?用python制作九宫格图片,太棒了

1. ? 应用场景 ?当初的想法是:想把一张图切割成九等份,发布到微信朋友圈,切割出来的图片,上传到朋友圈,发现微信不按照我排列的序号来排版。这样的结果是很耗时间的。让我深思,能不能有一种,直接拼接成...

如何使用python裁剪图片?

如何使用python裁剪图片如上图所示,这是一张包含了各类象棋棋子的图片。我们需要将其中每一个棋子都裁剪出来,此时可以利用python的 PIL库 实现。一、 安装PIL库如果此前没有安装过PIL库,...

使用Python将图片转换为字符画并保存到文件

字符画(ASCII Art)是将图片转换为由字符组成的艺术作品。利用Python,我们可以轻松实现图片转字符画的功能。本教程将带你一步步实现这个功能,并详细解释每一步的代码和实现原理。环境准备首先,你...

Python实现图片格式转换

在日常生活和工作中经常遇到需要转换图片格式的情况,网上有很多图片转换工具,但都需要注册登录,还有的要收费,作为一个程序员怎么能花这冤枉钱,于是就想着自己开发一个可以转换图片格式的软件。界面设计虽然只是...