python九宫格图片的原理
- 更新时间:2021-07-12 09:08:13
- 编辑:宦阳舒
给网友们整理相关的编程文章,网友邵子安根据主题投稿了本篇教程内容,涉及到Python相关内容,已被542网友关注,内容中涉及的知识点可以在下方直接下载获取。
参考资料
- 全国计算机等级考试二级教程:Python语言程序设计 PDF 电子书 / 7.9 MB / 教育部考试中心 推荐度:
- Python网络数据采集 PDF 电子书 / 16.7 MB / 米切尔 推荐度:
- OpenCV官方教程中文版(Python版) / 6.21 MB / 码小辫 推荐度:
- Python即学即用 PDF 电子书 / 99 MB / 张燕妮 推荐度:
- 卷积神经网络的Python实现 PDF 电子书 / 113.8 MB / 单建华 推荐度:
正文内容
今天在网上看到《python九宫格图片的原理》,感觉很有用处,把代码做了调试发布出来,看完如果觉得有用请记得收藏。
1、原理
用Python制作的九宫格图像生成器包装exe文件,用户无需部署安装Python的开发环境,即可在当地运行该程序,快速生成九宫格图像。
实现原理很简单,就是用PIL库不断画小区域,切下来存储成新的小图片。
2、实例
假设每一个格子的宽和高分别是w、h,那么第row行(从0开始计数),第col列(从0开始计数)的格子左上角坐标和右下角坐标分别是(col * w, row * h),(col * w + w, r * h + h)。
# -*- coding: UTF-8 -*- # 将一张图片分成九张,九宫格 import tkinter as tk from PIL import Image import sys #先将 input image 填充为正方形 def fill_image(image): width, height = image.size #选取长和宽中较大值作为新图片的 new_image_length = width if width > height else height #生成新图片[白底] new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white') #注意这个函数! #将之前的图粘贴在新图上,居中 if width > height:#原图宽大于高,则填充图片的竖直维度 #(x,y)二元组表示粘贴上图相对下图的起始位置,是个坐标点。 new_image.paste(image, (0, int((new_image_length - height) / 2))) else: new_image.paste(image, (int((new_image_length - width) / 2),0)) return new_image # 分割图片 def cut_image(image): width, height = image.size item_width = int(width / 3) #因为朋友圈一行放3张图。 box_list = [] # (left, upper, right, lower) for i in range(0,3): for j in range(0,3): #print((i*item_width,j*item_width,(i+1)*item_width,(j+1)*item_width)) box = (j*item_width,i*item_width,(j+1)*item_width,(i+1)*item_width) box_list.append(box) image_list = [image.crop(box) for box in box_list] return image_list #保存图片 def save_images(image_list): index = 1 for image in image_list: image.save(str(index) + '.png', 'PNG') index += 1 # 点击按钮,实现图片分割 def cTofClicked(): file_path=str(entryCd.get()) # 获取要进行分割的图片路径 image = Image.open(file_path) #image.show() image = fill_image(image) image_list = cut_image(image) save_images(image_list) labelcTof.config(text="九宫格图片已生,请在程序所在目录查看!") # 窗体 top=tk.Tk() top.title('九宫格图片生成器') labelcTof=tk.Label(top,text="请输入要进行转换的图片路径:",height=4,\ width=40,fg="blue") labelcTof.pack() entryCd=tk.Entry(top,text='0') # 文本框,获取图片路径 entryCd.pack() label_tip=tk.Label(top,text="请检查图片路径是否输入正确!",height=2,\ width=40,fg="gray") label_tip.pack() btnCal=tk.Button(top,text="点击生成九宫格图片",fg="red",bg="yellow",command=cTofClicked) # 点击回调函数 btnCal.pack() top.mainloop() # 执行主循环
以上就是python九宫格图片的原理,希望对大家有所帮助。
相关教程
-
python利用opencv保存、播放视频
这篇文章主要介绍了python利用opencv保存、播放视频,帮助大家更好的利用python处理视频,感兴趣的朋友可以了解下
发布时间:2021-05-02
-
如何使用Python完成一个NoSQL数据库的示例代码分享
NoSQL 这个词在近些年正变得随处可见. 但是到底 “NoSQL” 指的是什么? 它是如何并且为什么这么有用? 在本文, 我们将会通过纯 Python (我比较喜欢叫它, “轻结构化的伪代码”) 写一个 NoSQL 数据库
发布时间:2019-07-11