Python将图片处理为九宫格 不只是九宫格哦
时间:2022-07-23
本文章向大家介绍Python将图片处理为九宫格 不只是九宫格哦,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
九宫格图
概述
这两天在朋友圈又看到朋友在发九宫格类的图片,于是今天上网查了一下,发现网上这类应用很多,而且有的软件已经把这个功能集成。本部分主要是讲一下自己在九宫格图上的一些其他操作,使得九宫格图有了其他骚操作
项目论述
整个实现过程大致分两部分:图片转为九宫格、多元素拼接到同一个底片上。
1.图片转为九宫格
在这一部分网上代码很多很多,随便找一个稍微改改就好。它一般就是利用Pillow库实现。具体可以分为以下几部分。
(1)读取到原图片,获取图片尺寸后,将宽高对比,生成以白色为背景的大正方形图
(2)将大正方形图按照 3*3 比例进行切割,生成9个小正方形图
(3)分别生成 9 张小正方形图片并存储
2.图片拼接在一起
在这里主要是通过PIL在预先设置好的背景图中贴上自己想要添加的内容,难在于确定像素位置。本功能利用了微信显示长图时只显示中间部分的操作。
项目实现
1.准备各种素材
素材需求如下:白色长图、准备的待转九宫格图片、另外一些想要添加进去的图片元素。
2.图片转九宫格
(1)考虑到用户发送的图片不一定是一个方形的,因此首先需要对图片转成方形的。代码如下。
# 将图片填充为正方形
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
效果图如下。
(2)对大正方形进行切割,横纵两层循环,切割结果存储在列表。
(3)存储切割结果到本地
3图片拼接
这里采用把元素贴在一个底片上的方式实现。借鉴了网上的一些东西:例如加一些广告语(当然你也可以把他改成祝福语,看你想干啥了) ,把内容存储到字典里。接着通过对图片的缩放,像素位置的定位等一些列操作,将固定元素添加到固定位置,进而实现一个比较有趣的功能(网上把他做成了抽奖)。
朋友圈发送效果如下。
项目效果
整个项目的效果就是把图片分割成九份并创建新的九宫格长图。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python字典及基本操作(超级详细)
- Python matplotlab库使用方法及注意事项
- 超性感的React Hooks(三):useState
- 数据库编程 MySQL 技巧与经验
- Python 编程开发 实用经验和技巧
- 超性感的React Hooks(四):useEffect
- Python 库的安装及使用 常见错误异常及解决办法
- Kafka三种可视化监控管理工具Monitor/Manager/Eagle
- 超性感的React Hooks(五):自定义hooks
- 三、变量对象
- Java编程 经验技巧汇总
- 关于IP地址的一些相关知识点
- vmware的三种网络模式
- 我的 Chrome 版本不支持生成二维码,30 分钟怒怼了一个插件,附源码
- Android开发(第一行代码 第二版) 常见异常和解决办法(基于Android Studio)(二)