用Python实现将一张图片分成9宫格的示例


Posted in Python onJuly 05, 2019

经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下;

将图片分拆成九宫格的思路:

读取图片->填充图片为正方形(fill_image函数)->将图片切分为9张(cut_image函数)->保存图片(save_image)->over

代码实现如下:

from PIL import Image
import sys
#将图片填充为正方形
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)
  box_list = []
  # (left, upper, right, lower)
  for i in range(0,3):#两重循环,生成9张图片基于原图的位置
    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) + '.jpg')
    index += 1
 
if __name__ == '__main__':
  file_path = "微信图片_20180809234441.jpg"
  image = Image.open(file_path)
  # image.show()
  image = fill_image(image)
  image_list = cut_image(image)
  save_images(image_list)

效果如下:

用Python实现将一张图片分成9宫格的示例

参考了二胖大神提供的思路,里面的逻辑很有趣:

1.开始相当于是拿一张白底的图片粘贴到了原图上;

2.切图的时候分成9宫格,的循环写的也非常漂亮。

3.代码中出现了很多次for循环的迭代使用:[image.crop(box) for box in box_list],以后自己也要多练习这种写法。

以上这篇用Python实现将一张图片分成9宫格的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python多线程抓取天涯帖子内容示例
Apr 03 Python
简单的抓取淘宝图片的Python爬虫
Dec 25 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
Apr 28 Python
python中常用的九种预处理方法分享
Sep 11 Python
pycharm远程调试openstack代码
Nov 21 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
对Python通过pypyodbc访问Access数据库的方法详解
Oct 27 Python
python数据预处理 :数据抽样解析
Feb 24 Python
Jupyter加载文件的实现方法
Apr 14 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
Python+Xlwings 删除Excel的行和列
Dec 19 Python
python迷宫问题深度优先遍历实例
Jun 20 Python
python获取txt文件词向量过程详解
Jul 05 #Python
Python 的字典(Dict)是如何存储的
Jul 05 #Python
关于Python 的简单栅格图像边界提取方法
Jul 05 #Python
Python3+Appium安装使用教程
Jul 05 #Python
Python叠加两幅栅格图像的实现方法
Jul 05 #Python
用vue.js组件模拟v-model指令实例方法
Jul 05 #Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 #Python
You might like
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
PHP创建XML接口示例
2019/07/04 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
通过数据库向Django模型添加字段的示例
2015/07/21 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
HTML5实现预览本地图片
2016/02/17 HTML / CSS
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
顶撞领导检讨书
2014/01/29 职场文书
物流专员岗位职责
2014/02/17 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
消防宣传语大全
2015/07/13 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python