用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自动化工具日志查询分析脚本代码实现
Nov 26 Python
Python兔子毒药问题实例分析
Mar 05 Python
python处理按钮消息的实例详解
Jul 11 Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
Python画图高斯分布的示例
Jul 10 Python
Python 画出来六维图
Jul 26 Python
pytest中文文档之编写断言
Sep 12 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
python实现简单日志记录库glog的使用
Dec 13 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
Python pip安装第三方库实现过程解析
Jul 09 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
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
js获取url中"?"后面的字串方法
2014/05/15 Javascript
jquery实现动态画圆
2014/12/04 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
Python基础篇之初识Python必看攻略
2016/06/23 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
pandas 层次化索引的实现方法
2019/07/06 Python
virtualenv介绍及简明教程
2020/06/23 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
LINUX下线程,GDI类的解释
2012/04/17 面试题
励志演讲稿500字
2014/08/21 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS