小学生python游戏编程3---拼图游戏-准备

  • 主要设计
    • 1、背景
    • 2、图片分隔
    • 3、把小图片打乱顺序组装成拼图
  • 应用知识点
    • 1、python知识点
      • 1.1 Pillow(PIL)库的用法介绍
      • 1.2 PIL安装
      • 1.3 Image属性
      • 1.4 image方法
  • 功能截图
  • 代码实现
  • 总结
  • 源码获取

主要设计

1、背景

早在1760年,法英两国几乎同时出现这种既流行又有益的娱乐方式。把一张图片粘在硬纸板上,然后把它剪成不规则的小碎片。最初这些图片都是有教育意义的,要么附有适于年轻人阅读的短文,要么向新兴资产阶级传授历史或地理知识。
到19世纪初,新的大规模生产工业技术赋予了拼图明确的形式。以前庞大笨重的拼图由边缘光滑的碎片排列组成,轻微的震动就能使它们分开。在1840年左右,德国和法国的拼图制造商用联锁的咬接机来切割拼图,现代的拼图迷们都很熟悉这种形式。他们用软木材、夹板和纸板代替硬木薄板,大大降低了成本。最终价格低廉的拼图被各阶层的消费者接受,很快在孩子们、成年人和老年人中掀起玩拼图狂潮。
相信大家都玩过很多纸质的,木质的,电子的拼图游戏,今天就讲讲用python如何实现拼图游戏的准备工作。在图片上写些英语单词,孩子拼完一个基本可以看到一个完整的英语单词。

2、图片分隔

把整张图片分隔成n个小图片

3、把小图片打乱顺序组装成拼图

应用知识点

1、python知识点

1.1 Pillow(PIL)库的用法介绍

Pillow库是一个Python的第三方库。
在Python2中,PIL(Python Imaging Library)是一个非常好用的图像处理库,但PIL不支持Python3,所以有人(Alex Clark和Contributors)提供了Pillow,可以在Python3中使用。
打开一张图片并显示,如下代码

# coding=utf-8
from PIL import Image
image = Image.open("aaa.jpg")
image.show()

1.2 PIL安装

(venv) F:\le_python>pip install pillow
Looking in indexes: https://pypi.doubanio.com/simple
Collecting pillowDownloading https://pypi.doubanio.com/packages/ce/1c/c639b5662d3b831c4b95e08bc610a50a5b9e719f71338bedc0117e8dc5d3/Pillow-9.2.0-cp37-cp37m-win32.whl (2.8MB)100% |████████████████████████████████| 2.8MB 6.0MB/s
Installing collected packages: pillow
Successfully installed pillow-9.2.0

1.3 Image属性

    image = Image.open("images/yuantu/apple.png")print('width: ', image.width)print('height: ', image.height)print('size: ', image.size)print('mode: ', image.mode)print('format: ', image.format)print('is_animated: ', image.is_animated)print('readonly: ', image.readonly)print('info:', image.info)

显示:

width:  231
height:  184
size:  (231, 184)
mode:  RGB
format:  PNG
is_animated:  False
readonly:  1
info: {'dpi': (119.9896, 119.9896), 'Software': 'Snipaste'}

width属性表示图片的像素宽度
height属性表示图片的像素高度
width和height组成了size属性,size是一个元组。
mode属性表示图片的模式,如RGBA,RGB,P,L等。
format属性表示图片的格式,格式一般与图片的后缀扩展名相关。
readonly属性表述图片是否为只读,值为1或0,表示的是布尔值。
info属性表示图片的信息,是一个字典。

1.4 image方法

打开文件:
yuantu = Image.open(os.path.join(rootdir,‘apple.png’))

裁剪图片:
image.crop(box=None): 裁剪图片,返回裁剪区域的图片。box表示裁剪的区域,传入长度为4的元组(x0, y0, x1, y1),不传默认为拷贝原图,相当于copy()方法,如果裁剪的区域超过了原图的区域,超出部分用像素格填充。
box解释:
box, 图片粘贴的位置或区域。传入一个长度为2或4的元组,如果不传值,默认为(0, 0),图片被粘贴在当前图片的左上角。如果传入长度为2的元组(x, y),表示被粘贴图片的左上角坐标位置。如果传入长度为4的元组(x1, y1, x2, y2),表示图片粘贴的区域,此时区域的大小必须与被粘贴图片一致,否则会报错,传入的元组长度为其他值也会报错。


分隔成如下小图

功能截图

代码实现

# -*- coding: utf-8 -*-
# @Time : 2022年10月05日 16时07分
# @Author : Chenyi
# @File : 图片分隔.py# python install pillow
import os
from PIL import Image# 分割图片,横向分成x份,纵向分成y份
def cut_image(image, x, y):width, height = image.sizeitem_width = int(width / x)item_height = int(height / y)box_list = []# (left, upper, right, lower)for i in range(0, x):  # 横向for j in range(0, y): # 纵向print(i * item_width, item_height * j, (i + 1) * item_width, item_height * (j+1))box = (i * item_width, item_height * j, (i + 1) * item_width, item_height* (j+1))box_list.append(box)image_list = [image.crop(box) for box in box_list]return image_list# 保存分割后的图片
def save_images(image_list, dir_name, file_name):index = 1for image in image_list:image.save(dir_name+file_name + '-' + str(index) + '.png', 'PNG')index += 1if __name__ == '__main__':rootdir = "images/yuantu"# 获取rootdir目录下的文件名清单list = os.listdir(rootdir)print(list)yuantu = Image.open(os.path.join(rootdir,'apple.png'))print(yuantu)pics=cut_image(yuantu, 3, 3)save_images(pics, "images/fenge/", 'apple')

总结

通过此次的《拼图游戏准备》,让我对PIL中image的相关知识有了进一步的了解,对用 python这门语言进行图片处理比以前更深刻的认识。

源码获取

关注博主后,私聊博主免费获取
需要技术指导,育娃新思考,企业软件合作等更多服务请联系博主

今天是以此模板持续更新此育儿专栏的第 3 /50次。
可以关注我,点赞我、评论我、收藏我啦。

小学生python游戏编程3----拼图游戏-准备相关推荐

  1. 小学生python游戏编程4----拼图游戏

    小学生python游戏编程4----拼图游戏 主要设计 应用知识点 1.python知识点 1.1 函数定义与使用 1.2 random 2.pygamezero知识点 2.1 基本框架,取上节中讲到 ...

  2. python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...

  3. 有趣的Python Challenge编程解谜游戏攻略二(5-9关)

    **有趣的Python Challenge编程解谜游戏攻略二(5-9关)** 介绍 游戏介绍 0-4关攻略 写在前面 关卡 第5关 第6关 第7关 第8关 第9关 链接总结 第10关预告 介绍 游戏介 ...

  4. 3D游戏编程与设计——游戏的本质章节作业与练习

    3D游戏编程与设计--游戏的本质章节作业与练习 18342138 郑卓民 3D游戏编程与设计--游戏的本质章节作业与练习 作业与练习: 游戏名称及简介: 游戏的随机性 游戏的玩法与目标 游戏的冲突 游 ...

  5. 微信小游戏入门案例——拼图游戏

    微信小游戏入门案例--拼图游戏 涉及内容:canvas组件.小程序界面绘图API 目录结构: pages\game\game.js // pages/game/game.js // 方块的初始位置 v ...

  6. html5拼图游戏开题报告,拼图游戏开题报告-20210406005939.doc-原创力文档

    拼图游戏开题报告 拼图游戏不仅可以帮助 ___打发时间,还可以用于锻炼儿童脑力,帮助少儿 ___大脑思维是Android平台游戏的一个特点. 智能 ___作为一种兼具通讯.办公.娱乐为一体的便携式工具 ...

  7. python游戏编程书_Python游戏编程快速上手 第4版 (斯维加特著) 中文pdf扫描版[41MB]...

    Python是一种高级程序设计语言,因其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言. Python游戏编程快速上手 (第4版)通过编写一个个小巧.有趣的游戏来教授Python编程,并且采用 ...

  8. python小欢喜(七)游戏编程 (2) 挡球游戏的改进:使用中文提示并添加声音效果

    在前面的文章<python小欢喜(六)动画 (1) pygame的安装与初步使用>中介绍了如何安装pygame. <python小欢喜(七)游戏编程 (1) 挡球>实现了一个小 ...

  9. python趣味编程-简单乒乓游戏(多人游戏)

    ​​ 在上一期我们用Python实现了一个简单的计算器的游戏,这一期我们继续使用Python实现一个简单的乒乓球游戏,让我们开始今天的旅程吧~ 简单乒乓游戏(多人游戏) 简单乒乓游戏(多人游戏)是一个 ...

  10. python趣味编程-高速公路汽车游戏

    在上一期我们用Python实现了一个太空大战的游戏,这一期我们继续使用Python实现一个简单的高速公路汽车游戏,让我们开始今天的旅程吧~ Python 中的高速公路汽车游戏免费源代码 Python  ...

最新文章

  1. 修改远程桌面连接端口
  2. 线性方程组与基尔霍夫定律
  3. SQL -- 是否或推断线相交以在其内部的平面
  4. python if语句
  5. SAP CRM Fiori My Appointment应用里点了Edit按钮后三个Roundtrip分析
  6. 前端换行显示,后端返回br
  7. HomeWindowsYesPlayMusic – 一个好看的第三方xx云音乐客户端 YesPlayMusic
  8. Python_多元回归(一元回归)
  9. mysql的两种存储方法_mysql的两种存储引擎
  10. ArrayList源码解读(jdk1.8)
  11. 洛谷p3803 FFT入门
  12. quot在c语言里用法,C语言中“#”和quot;##quot;的用法
  13. Root Pane Container(三)
  14. 解决同一办公环境局域网下无法添加打印机的情况
  15. Java-热插拔技术
  16. 解决“应用程序正常初始化(0x00000005)失败”错误
  17. excel如何提取图片中的文字?
  18. python中int() 按照“四舍五入”的方式取整
  19. iOS:DES加密iOS和Android的匹配
  20. java十进制转化为二进制

热门文章

  1. zul使用java_zk中zul页面中组件的id和java类中的变量绑定实现
  2. vc_redist 各版本下载地址
  3. auto.js下载安装教程
  4. java html报表设置_快逸报表中html事件属性的使用
  5. 毕业设计之校园一卡通管理系统的设计与实现
  6. Docker容器中安装JDK
  7. AutoAnswer使用指南(QQ、微信自动接听)
  8. DenseNet网络结构详解及代码复现
  9. hive sql脚本学习
  10. dump文件 linux,Linux下快速分析DUMP文件