python 图片拼图的制作 确定不来尝试一下……

python 图片拼图的制作 确定不来尝试一下……

8小时Python零基础轻松入门

图片迷宫九宫格的制作,确定不来尝试一下吗?下面来看一下效果图吧


在这里插入图片描述


在这里插入图片描述

效果是不是不错呢。

下面介绍一下这炫酷的图是如何制作的吧。

1、导入需要使用到的模块

from PIL import Image
import random

2、 输入图片的路径,获取图片的信息

# 导入图片
path = input("请输入图片路径:")
path1 = input("请输入需要保存的路径:")
image = Image.open(path)

# 获取图片数据 大小等
(width, height) = image.size  

3、对图片的大小进行简单的处理(处理大小为3的倍数)

width = width - width % 3
height = height - height % 3

4、对图片进行切割

# 分割图片为九块
image_part = []

image_part.append(image.crop((0, 0, width // 3, height // 3)))
image_part.append(image.crop((width // 3, 0, 2 * width // 3, height // 3)))
image_part.append(image.crop((2 * width // 3, 0, width, height // 3)))
image_part.append(image.crop((0, height // 3, width // 3, 2 * height // 3)))
image_part.append(image.crop((width // 3, height // 3, 2 * width // 3, 2 * height // 3)))
image_part.append(image.crop((2 * width // 3, height // 3, width, 2 * height // 3)))
image_part.append(image.crop((0, 2 * height // 3, width // 3, height)))
image_part.append(image.crop((width // 3, 2 * height // 3, 2 * width // 3, height)))
image_part.append(image.crop((2 * width // 3, 2 * height // 3, width, height)))

5、对获取到的图片数组进行打乱

# 打乱图片顺序
random.shuffle(image_part)

6、新建一个画布,对切割的图片进行粘贴

# 新建一个画布,粘贴进去
draw = Image.new("RGB", (width,height),color=(255,255,255))
draw.paste(image_part[0], (0, 0, width // 3,height // 3))
draw.paste(image_part[1], (width // 3, 0, 2 * width // 3, height // 3))
draw.paste(image_part[2], (2 * width // 3, 0, width, height // 3))
draw.paste(image_part[3], (0, height // 3, width // 3, 2 * height // 3))
draw.paste(image_part[4], (width // 3, height // 3, 2 * width // 3, 2 * height // 3))
draw.paste(image_part[5], (2 * width // 3, height // 3, width, 2 * height // 3))
draw.paste(image_part[6], (0, 2 * height // 3, width // 3, height))
draw.paste(image_part[7], (width // 3, 2 * height // 3, 2 * width // 3, height))
draw.paste(image_part[8], (2 * width // 3, 2 * height // 3, width, height))

7、保存打乱之后的九宫格图片

draw.save(path1)     # 路径自定义

就这样子迷宫九宫格就制作成功了,是不是很简单呢。快来动手尝试一下吧。

注意:
1、对图片进行切割,记住需要对图片大小进行处理,必须是整数,同时切割之后的大小也必须是整数;(所以要求图片的大小为3的倍数)
2、对切割之后的图片列表打乱顺序;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115151.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • python break和continue

    python break和continuebreak语句break语句是用来终止循环语句的,即哪怕循环条件没有称为False或序列还没有被完全递归,也停止执行循环语句。>>>whileTrue:…s=input(‘Entersomething’)…ifs==’quit’:…break…print(‘aa’)…..

  • centos tc 端口限速

    centos tc 端口限速

  • Avro介绍[通俗易懂]

    Avro介绍[通俗易懂]ApacheAvro是一个数据序列化系统。Avro所提供的属性:1.丰富的数据结构2.使用快速的压缩二进制数据格式3.提供容器文件用于持久化数据4.远程过程调用RPC5.简单的动态语言结合功能,Avro和动态语言结合后,读写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。Avro的SchemaAvro的Schema用…

  • Python中的XOR异或符号^运用

    Python中的XOR异或符号^运用^运算符为异或运算a=10b=100c=a^b#c=110为什么会得到这样的结果呢?bin(10)#’0b1010’bin(100)#’0b1100100’其实这里面经历了几次计算:1.计算a,b的二进制值:bin(10)#’0b1010’bin(100)#’0b1100100’2.^符号的作用是将两数字相…

  • ccd视觉定位教程_正规CCD视觉定位系统工作原理[通俗易懂]

    ccd视觉定位教程_正规CCD视觉定位系统工作原理[通俗易懂]产品品牌CCD视觉定位系统发货城市-有效期至长期有效最小起订1产品单价面议深圳精科视觉科技有限公司成立于2011年底,是一家在视觉及自动化领域有着多年经验的科技公司,专业从事非标自动化机器视觉整套解决方案。公司集研发、销售、维护为一体,汇聚了一批追求卓越、勇于探索、敢于创新、在行业内具有丰富经验的工程技术人员,组建了一支专业、敬业的市场营销团队。激光打标技术具有以下的特点1、可对绝大多数金属或非金…

  • anaconda卸载方法

    anaconda卸载方法卸载anaconda

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号