Python切图九宫格的实现方法


Posted in Python onOctober 10, 2019

本文介绍了Python切图九宫格的实现方法,分享给大家,具体如下

Python切图九宫格的实现方法

# -*- coding: utf-8 -*-
'''
将一张图片填充为正方形后切为9张图
'''
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('./python'+str(index) + '.png', 'PNG')
    index += 1

if __name__ == '__main__':
  file_path = "python.jpeg"
  image = Image.open(file_path)
  #image.show()
  image = fill_image(image)
  image_list = cut_image(image)
  save_images(image_list)

Python切图九宫格的实现方法 Python切图九宫格的实现方法 Python切图九宫格的实现方法

Python切图九宫格的实现方法 Python切图九宫格的实现方法 Python切图九宫格的实现方法

Python切图九宫格的实现方法 Python切图九宫格的实现方法 Python切图九宫格的实现方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python进行基础的函数式编程的教程
Mar 31 Python
提升Python程序运行效率的6个方法
Mar 31 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
Python反射用法实例简析
Dec 22 Python
VSCode下好用的Python插件及配置
Apr 06 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
Python中的Django基本命令实例详解
Jul 15 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
如何使用repr调试python程序
Feb 28 Python
Python celery原理及运行流程解析
Jun 13 Python
Python爬虫之爬取最新更新的小说网站
May 06 Python
python 3.7.4 安装 opencv的教程
Oct 10 #Python
Django实现auth模块下的登录注册与注销功能
Oct 10 #Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 #Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 #Python
超实用的 30 段 Python 案例
Oct 10 #Python
使用浏览器访问python写的服务器程序
Oct 10 #Python
详解Python time库的使用
Oct 10 #Python
You might like
php图片缩放实现方法
2014/02/20 PHP
php中filter_input函数用法分析
2014/11/15 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
Python实现队列的方法
2015/05/26 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
Python中偏函数用法示例
2018/06/07 Python
python中sys.argv函数精简概括
2018/07/08 Python
python3 实现口罩抽签的功能
2020/03/11 Python
jupyter notebook清除输出方式
2020/04/10 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
采购员的工作职责
2013/12/26 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
2019大学生实习报告
2019/06/21 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技