Python切图九宫格的实现方法

 更新时间:2019年10月10日 14:04:10   作者:幽灵鸟  
这篇文章主要介绍了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)

  

  

  

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

相关文章

  • Python3.6通过自带的urllib通过get或post方法请求url的实例

    Python3.6通过自带的urllib通过get或post方法请求url的实例

    下面小编就为大家分享一篇Python3.6通过自带的urllib通过get或post方法请求url的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python中glob.glob()函数的使用

    Python中glob.glob()函数的使用

    glob 模块用于查找规定路径下的文件路径名,本文主要介绍了Python中glob.glob()函数的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Matplotlib 生成不同大小的subplots实例

    Matplotlib 生成不同大小的subplots实例

    今天小编就为大家分享一篇Matplotlib 生成不同大小的subplots实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python3+selenium4实现切换窗口与iframe的方法

    python3+selenium4实现切换窗口与iframe的方法

    在自动化测试过程中,有时后会遇到元素定位方式没有问题,但是依旧抛出无法找到元素的异常的问题,有可能是由于当前焦点不在指定页面或iframe导致的,本文就来说明 一下
    2021-05-05
  • python+pillow绘制矩阵盖尔圆简单实例

    python+pillow绘制矩阵盖尔圆简单实例

    这篇文章主要介绍了Python+pillow绘制矩阵盖尔圆简单实例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 探索Python函数调用为何加速代码执行原理

    探索Python函数调用为何加速代码执行原理

    Python 作为一种解释型语言,其执行速度相对于编译型语言可能会较慢,然而,在Python中,通常观察到代码在函数中运行得更快的现象,这个现象主要是由于函数调用的内部优化和解释器的工作方式导致的,本文将深入探讨这个现象,并通过详细的示例代码进行解释
    2024-01-01
  • 详谈Python基础之内置函数和递归

    详谈Python基础之内置函数和递归

    下面小编就为大家带来一篇Python基础之内置函数和递归。小编觉得挺不错的。现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Python办公自动化SFTP详解

    Python办公自动化SFTP详解

    这篇文章主要介绍了Python办公自动化SFTP详解,sftp和ftp的区别在安全通道,使用的协议,链接方式,安全性等方面都有不同,更多相关内容需要的小伙伴可以参考一下
    2022-08-08
  • 15个Pythonic的代码示例(值得收藏)

    15个Pythonic的代码示例(值得收藏)

    这篇文章主要介绍了15个Pythonic的代码示例(值得收藏),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • django配置使用asgi的实现步骤

    django配置使用asgi的实现步骤

    本文主要介绍了django配置使用asgi的实现步骤,支持 ASGI 协议能处理传统HTTP请求,也能支持实时WebSocket通信,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03

最新评论