当前位置: 首页 > news >正文

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

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

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

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

效果如下:

19101423503974392231609627.jpg

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

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

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

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

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

相关文章:

  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • python做运动控制_【仿真】基于mPython掌控地月运动系统
  • 悟空问答python反爬_悟_刘德华_高音质在线试听_悟歌词|歌曲下载_酷狗音乐
  • redis 登录_redis如何做亿级用户登录日活统计?(内含资料)
  • span js增加display_小猿圈前端编写JS五子棋游戏
  • python读取的数据怎么变成数据框数据_利用python进行数据分析
  • java 对象创建过程_JAVA创建对象的几种方式
  • ajax获取json数据并显示_ajax请求echarts圆饼图动态显示数据方法
  • ajax req.getsession() 获取不到_ajax上传文件后台接收文件对比
  • python中ls是什么_python实现windows下的ls函数
  • python程序怎么写_注册程序怎么写??【python】
  • bpmn流程图_流程图软件哪个好用?
  • 信息系统项目管理师_信息系统项目管理师论文格式
  • python average函数详解_Python内置函数详解——总结篇
  • python3标准库有哪些_Python3-标准库
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • django开发-定时任务的使用
  • docker python 配置
  • HashMap ConcurrentHashMap
  • JS实现简单的MVC模式开发小游戏
  • js作用域和this的理解
  • JWT究竟是什么呢?
  • leetcode讲解--894. All Possible Full Binary Trees
  • redis学习笔记(三):列表、集合、有序集合
  • ubuntu 下nginx安装 并支持https协议
  • V4L2视频输入框架概述
  • 后端_ThinkPHP5
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 如何利用MongoDB打造TOP榜小程序
  • 树莓派 - 使用须知
  • 为什么要用IPython/Jupyter?
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 阿里云ACE认证之理解CDN技术
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #预处理和函数的对比以及条件编译
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (BFS)hdoj2377-Bus Pass
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (备忘)Java Map 遍历
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (利用IDEA+Maven)定制属于自己的jar包
  • (强烈推荐)移动端音视频从零到上手(下)
  • (三)uboot源码分析
  • (十一)图像的罗伯特梯度锐化
  • (转)负载均衡,回话保持,cookie
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 设计一套高性能的弱事件机制