经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下;

将图片分拆成九宫格的思路:

读取图片->填充图片为正方形(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)

效果如下:

参考了二胖大神提供的思路,里面的逻辑很有趣:

1.开始相当于是拿一张白底的图片粘贴到了原图上;

2.切图的时候分成9宫格,的循环写的也非常漂亮。

3.代码中出现了很多次for循环的迭代使用:[image.crop(box) for box in box_list],以后自己也要多练习这种写法。

以上这篇用Python实现将一张图片分成9宫格的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

用python做一张图片_用Python实现将一张图片分成9宫格的示例相关推荐

  1. python把一堆图片分成n份_用Python实现将一张图片分成9宫格的示例

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

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

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

  3. 用python做自我介绍_用python做个自我介绍(python入门教程)_逻辑教育

    原标题:用python做个自我介绍(python入门教程)_逻辑教育 本文涉及的python基础语法为:数据类型等 数字类型 1. 字符串的拼接 我们在上一章中已经简单介绍了一下字符串的创建方式,这里 ...

  4. python做logistic回归_用Python做Logistic回归

    为什么写这篇文章 本人初学python,碰巧做的东西需要用一下Logistic回归,自觉这个很基础的东西应该已经有很多比较好的实现了,于是我就很自觉地问了下度娘.结果大囧==..出来的相关结果少得可怜 ...

  5. python做股票分析_利用Python进行股票投资组合分析(调试)

    pythonsp500-robo-advisor-edition Python for Financial Analyses 需要的镜像文件和数据--Robo Advisor edition. 小结 ...

  6. python做淘宝_用python做个淘宝双十一满减攻略,再也不用算算算了

    双十一还有不到10天,购物车已经快加满了,但是钱包里就这么多钱,如何用现有的钱买到更多喜欢的东西,成为我比较头疼的事,因为我已经被各种组合加法搞晕了 于是我决定用python做个双十一购物攻略,把复杂 ...

  7. 使用python做一个闹钟_用python做了个高级闹钟 欢迎借鉴

    原标题:用python做了个高级闹钟 欢迎借鉴 音频文件放入和.py文件同级的目录下 这是简单的闹钟做法,市场上闹钟千千万万,但是自己写出来的闹钟就是不一样,不是小编我无聊,学习乐趣就是这样慢慢培养的 ...

  8. 学会python做什么兼职_学会python能干嘛 学会python可以做哪些兼职?

    学会python可以干什么都希望一段感情会有结果,谁都不希望美好的爱情最后是一场痛,但是如果一开始就想着不在乎天长地久,只在乎曾经拥有"的态度,再美好的感情也不会有好的结果. 从入门级选手到 ...

  9. python做var模型_【Python金融量化】VaR系列(五):Copula模型估计组合VaR

    作者:量化小白H     Python爱好者社区专栏作者 个人公众号:量化小白上分记 前文传送门: 之前总结的大部分模型都是基于正态性的假设,但实际上,正态性假设并不非常符合金融时间序列的特征.如果从 ...

最新文章

  1. Kotlin setText 使用
  2. POJ 2778 DNA Sequence (自动机DP+矩阵快速幂)
  3. Servlet-Access denied for user 'root'@'localhost' (using password: YES
  4. 关于html-三角的制作
  5. 华为云.NET Core支持情况调查
  6. vs点击方法跳不到对于的地方_内脏脂肪怎么测?这个方法也太方便了!| EASD 2020...
  7. Linux系统运行Windows程序(Linux执行windows程序)
  8. jvm垃圾回收之JVM GC算法
  9. url、href、src 详解
  10. Hibernate 关联映射
  11. 「架构师必备」java程序员面试宝典百度云
  12. 手把手教你Mac重装系统不再难:苹果电脑重装系统教程
  13. java商城加入购物车接口实现_商城系统购物车功能分析实现
  14. Win7快速启动栏设置及防止消失方法
  15. 波士顿房价预测(一)
  16. Coursera 算法二 week 4 Boggle
  17. VB6.0 让函数返回一个值
  18. 声源定位之GCC-PHAT算法
  19. android转flutter成型来读一读
  20. 易语言linux静态编译失败,易语言静态编译出现错误求解决

热门文章

  1. JSP+ssm计算机毕业设计地方特色风味小吃的推荐系统3fs3p【源码、数据库、LW、部署】
  2. HTML期末大作业课程设计~动漫游戏官网10个页面(HTML+CSS+JavaScript)
  3. 乒乓球实战战术和技巧
  4. 用户可以改变计算机功能键吗,键盘上的功能键可以由程序设计者来改变吗,计算机一级题...
  5. iOS NSTimer定时器
  6. oracle rman 登录方式,RMAN登陆及连接target数据库的步骤方法
  7. IOS 帝国背后的神话故事
  8. java byte数组转short数组
  9. VUE路由去掉“#”
  10. 深入理解计算机系统(第三版)第3章 家庭作业