一、前言

大家在朋友圈应该看到过用一张图片以九宫格的方式显示,效果大致如下:

要实现上面的效果非常简单,我们只需要截取图片的九个区域即可。今天我们就要带大家使用Python来实现一下九宫格图片的生成。在开始之前,我们需要安装一下Pillow模块,语句如下:

pip install pillow

下面我们先来看看一些简单的图片操作。

二、图片基本操作

今天我们会使用到三个操作,分别是读取图片、保存图片和截取图片。下面我们分别来看看。

2.1 读取图片

在Pillow中,我们最常用的就是Image子模块。其中读取图片的操作就是通过Image.open函数来实现。Image.open函数会返回一个图片对象,我们来看看具体的代码:

from PIL import Image
# 读取图片
img = Image.open('lbxx.jpg')

Pillow模块是PIL模块的python3版本,因此我们导入模块时是使用下面语句:

from PIL import Image

后面我们就可以通过操作img对象来实现对图片的操作。

2.2 截取图片

在Image对象中,有一个crop方法,可以用于剪切图片。它接收一个box参数,表示要截取的区域。参数是一个元组,元素内容分别是左上角x,y坐标,右下角x,y坐标。图片中的坐标系是以左上角为原点的,如图:

假如我们需要截取图片如下区域:

那我们的参数应该如下:

img.crop((x1, y1, x2, y2))

我们来看看具体的代码:

from PIL import Image
# 读取图片
img = Image.open('lbxx.jpg')
# 截取图片的(0, 0, 300, 300)区域
box = img.crop((0, 0, 300, 300))
# 显示截取的区域
box.show()

2.3 保存图片

保存图片的操作非常简单,我们只需要调用img的save方法即可,我们直接看代码:

from PIL import Image
img = Image.open('lbxx.jpg')
box = img.crop((0, 0, 300, 300))
# 保存图片
box.save('1.jpg')

我们直接调用save方法,传入保存的路径即可。

三、生成九宫格图片

知道了上面的操作,下面的操作无非就是截取图片的九个区域,然后保存即可。具体代码如下:

from PIL import Image
# 读取图片
im = Image.open('lbxx.jpg ')# 宽高各除 3,获取裁剪后的单张图片大小
width = im.size[0]//3
height = im.size[1]//3# 裁剪图片的左上角坐标
start_x = 0
start_y = 0# 用于给图片命名
im_name = 1# 循环裁剪图片
for i in range(3):for j in range(3):# 裁剪图片并保存crop = im.crop((start_x, start_y, start_x+width, start_y+height))crop.save('imgs/' + str(im_name) + '.jpg')# 将左上角坐标的 x 轴向右移动start_x += widthim_name += 1# 当第一行裁剪完后 x 继续从 0 开始裁剪start_x = 0# 裁剪第二行start_y += height

我们先创建一个imgs目录,然后运行程序就可以在imgs下看到截取好的图片。

不过上面的代码还有些不便之处,就是我们需要手动创建imgs目录。我们可以借助os模块来帮我们自动创建改目录,修改后的代码如下:

import os
from PIL import Image
# 读取图片
im = Image.open('1kkx.jpg')# 宽高各除 3,获取裁剪后的单张图片大小
width = im.size[0]//3
height = im.size[1]//3# 裁剪图片的左上角坐标
start_x = 0
start_y = 0# 用于给图片命名
im_name = 1# 循环裁剪图片
for i in range(3):for j in range(3):# 裁剪图片并保存crop = im.crop((start_x, start_y, start_x+width, start_y+height))# 判断文件夹是否存在if not os.path.exists('imgs'):os.mkdir('imgs')crop.save('imgs/' + str(im_name) + '.jpg')# 将左上角坐标的 x 轴向右移动start_x += widthim_name += 1# 当第一行裁剪完后 x 继续从 0 开始裁剪start_x = 0# 裁剪第二行start_y += height

我们进行了一个简单的判断,如何再决定要不要创建文件夹。最终效果是一样的。

Python生成九宫格图片相关推荐

  1. python九宫格拼图,Python生成九宫格图片

    Python生成九宫格图片 一.前言 大家在朋友圈应该看到过用一张图片以九宫格的方式显示,效果大致如下: 要实现上面的效果非常简单,我们只需要截取图片的九个区域即可.今天我们就要带大家使用Python ...

  2. python语言编写一个生成九宫格图片的代码_python实现图片九宫格分割

    大家都知道在微信朋友圈或者微博以及QQ动态中,有很多"强迫症患者"发图片都爱发9张,而有些图是一张图片分成的九宫图,对于这种操作,大家知道是怎么做到的吗? 本文就是用Python做 ...

  3. python语言编写一个生成九宫格图片的代码_Python 生成你的朋友圈九宫格图片

    关于微信之前写过以下文章,有兴趣可以点击查看: 你可能在朋友圈看过九宫格图片(把一张图片按照比例分成九份),就像这样的: 还有微博九宫格图 https://weibo.com/2717930601/. ...

  4. Python | 一键生成九宫格图片

    ##一键生成九宫格图片 首先我们准备几张图片: 将代码文件放在放置图片的地方,用软件打开: 点击运行,在当前目录下会生成一个文件夹: 打开新生成的文件夹: 打开对应图片的名称文件夹: 如果不想图片被分 ...

  5. 分享一个python生成ico图片程序

    分享一个python生成ico图片程序 利用python PIL 进行ico 生成,课利用web框架扩展开发出网页版本. # -*- coding: utf-8 -*- from PIL import ...

  6. Python生成内涵图片

    Python生成内涵图片 先看案例 原图 生成后(放大看看,嘿嘿嘿) 上代码: from PIL import Image, ImageDraw, ImageFontfont_size = 7 tex ...

  7. python语言编写一个生成九宫格图片的代码_用Python实现将一张图片分成9宫格的示例...

    经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下; 将图片分拆成九宫格的思路: 读取图片->填充图片为正方形(fill_image函数) ...

  8. python语言编写一个生成九宫格图片的代码_用Python一键生成炫酷九宫格图片,火了朋友圈...

    作为一个男同胞来说,为了给女朋友拍一张美美的照片,着实需要花费很大的时间和精力,不仅仅需要从众多的图片中精心挑选,而且还需要有着超强的图片精修能力,才能得到一张张达到女友要求的图片,真心不容易啊- 朋 ...

  9. python语言编写一个生成九宫格图片的代码_python简单实现9宫格图片实例

    在日常生活中我们经常在朋友圈看到有人发九宫格图片,其实质就是将一张图片切成九份,然后在微信中一起发这九张图. 那么我们如何自己动手实现呢? 说到切图Python 就可以实现,主要用到的 Python ...

最新文章

  1. 排除hotnews主题内容页面上的热点图片推荐里的分类-hotnews主题top_hot.php
  2. IPC$概念及入侵方式研究
  3. mysql服务怎么改名字_MySQL数据库改名字
  4. CentOS7升级内核kernel5.0
  5. C#.NET学习笔记2---C#.第一个C#程序
  6. 为什么说图形数据库是大数据时代的利器?
  7. Spring入门(三)
  8. entity framework 动态条件
  9. Oracle 视图、序列、索引、游标、触发器、事务
  10. 估值模型不适用_揭开市盈率估值法的真正面纱 | 实战案例系列
  11. 1、pr的基本操作流程学习
  12. 最稳定的工作,是你认可的那份
  13. 基于STM32MP1的医疗应用——心电仪
  14. 如何在企业微信中打通私域闭环?
  15. 使用UE4制作简单的局域网对战小游戏
  16. PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
  17. wps vba连接mysql_第12篇 WPS数据库编程.pdf
  18. 实例比较单精度浮点型,双精度浮点型运算结果精度
  19. 计算机英语反思总结怎么写,英语考试反思总结(精选10篇)
  20. 【格林深瞳22校招开发岗】笔试

热门文章

  1. JAVA之bootstrap01
  2. word文档太大怎么压缩到最小
  3. C语言实现二叉排序树
  4. Ubuntu16.04 使用apt-get安装软件时无法自动安装所需要的依赖
  5. 卷积码树状图怎么画_卷积码是什么 卷积码编码原理介绍【图文】
  6. 死链提交为什么不能提交 html文件,如何正确使用死链提交工具
  7. 我是一只在IT线上苦苦挣扎的小菜鸟
  8. shiro使用Md5加密
  9. 前端访问nginx发布的视频文件,实现在线播放
  10. vulnhub--Thoth Tech: 1