用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简单实现socket信息发送与监听功能示例
Jan 03 Python
Python AES加密实例解析
Jan 18 Python
python简单实现操作Mysql数据库
Jan 29 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
详解python中的hashlib模块的使用
Apr 22 Python
python中的&&及||的实现示例
Aug 07 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
python爬虫实现获取下一页代码
Mar 13 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
Python基础之教你怎么在M1系统上使用pandas
May 08 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表单提交问题的解决方法
2011/04/12 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
PHP发送短信代码分享
2015/08/11 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
2016/12/17 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
Python subprocess模块学习总结
2014/03/13 Python
在Django框架中运行Python应用全攻略
2015/07/17 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书
MySQL基础(一)
2021/04/05 MySQL
Oracle中update和select 关联操作
2022/01/18 Oracle