python-图片批量处理成正方形
我们平时获取的图片都是矩阵居多,现在如何怎么这些矩形处理成正方形呢
正方形的处理方式一般有这两种,一种是裁剪掉较长边的长度与宽等长,另一种则是填充将较宽的边与较长边等长。
1.裁剪成正方形-单张图片处理
代码如下:
from PIL import Image
a = "1234.png" #打开本地图片
image=Image.open(a) #打开本地图片
img = image.convert('RGB')
if img.size[0] > img.size[1]:x = abs((img.size[0] - img.size[1]) / 2)y = 0w = img.size[1]
else:x = 0y = abs((img.size[0] - img.size[1]) / 2)w = img.size[0]
# 第一个参数左上x距离,第二参数左上y距离,第三个参数x+w,第四个参数y+h
img_c = img.crop([x, y, x + w, y + w])
image_data = img_c.resize((224, 224)) # 缩放
image_data.save('./' + '11.jpg') # 保存图片在本地
image_data.show()
我这里原图名称为1234.jpg,代码处理后在本地生成一个11.jpg的正方形图片,处理结果图如下
批量处理的代码如下:
import os
from PIL import Imagedir = './1/'
files = os.listdir(dir)
files.sort()
a = 0
a1 = 0
for each_bmp in files: # 遍历,进行批量转换first_name, second_name = os.path.splitext(each_bmp)each_bmp = os.path.join(dir, each_bmp)image = Image.open(each_bmp)img = image.convert('RGB')if img.size[0] > img.size[1]:x = abs((img.size[0] - img.size[1]) / 2)y = 0w = img.size[1]else:x = 0y = abs((img.size[0] - img.size[1]) / 2)w = img.size[0]# 第一个参数左上x距离,第二参数左上y距离,第三个参数x+w,第四个参数y+himg_c = img.crop([x, y, x + w, y + w])image_data = img_c.resize((224, 224)) # 缩放image_data.save(dir + first_name + '.jpg') # 保存图片 参数一保存图片的格式 2为路径
在本地1文件夹下面有若干图片,对其全部读入转化成正方形,并替换原图
2.填充成正方形-单张图片处理
代码如下:
from PIL import Image#单张图片处理image=Image.open("1234.png") #打开本地图片
image = image.convert('RGB') #把图片转化成RGB
w, h = image.size #获取图片的原始尺寸
background = Image.new('RGB', size=(max(w, h), max(w, h)), color=(127, 127, 127)) # 根据原始尺寸 创建较长为边的背景图,颜色值为127
len = int(abs(w - h) // 2) # 一侧需要填充的长度
box = (len, 0) if w < h else (0, len) # 图片粘贴的位置 即图片的位置,从左上开始 假设w=10,h=8,则粘填位置(0,1),从左往右0长度,从上往下1长度,图片粘在背景上
background.paste(image, box)
image_data=background.resize((224,224))#缩放
background.show()
同样是打开本地的图片1234.jpg,转化后的图片如下图所示:
批量处理的代码如下:
import os
from PIL import Image#批量图片处理dir = './1/'
files = os.listdir(dir)
files.sort()
for each_bmp in files: # 遍历,进行批量转换first_name, second_name = os.path.splitext(each_bmp)each_bmp = os.path.join(dir, each_bmp)image = Image.open(each_bmp)image = image.convert('RGB')w, h = image.size #获取图片的原始尺寸background = Image.new('RGB', size=(max(w, h), max(w, h)), color=(127, 127, 127)) # 根据原始尺寸 创建较长为边的背景图,颜色值为127len = int(abs(w - h) // 2) # 一侧需要填充的长度box = (len, 0) if w < h else (0, len) # 图片粘贴的位置 即图片的位置,从左上开始 假设w=10,h=8,则粘填位置(0,1),从左往右0长度,从上往下1长度,图片粘在背景上background.paste(image, box)image_data=background.resize((224,224))#缩放image_data.save(dir + first_name + '.jpg') # 保存图片 参数一保存图片的格式 2为路径
求点赞关注!!!!!
python-图片批量处理成正方形相关推荐
- Python将bmp格式的图片批量转成jpg
# *_* coding : UTF-8 *_* # 开发人员: csu·pan-_-|| # 开发时间: 2020/11/21 12:40 # 文件名称: bmp_to_jpg.py # 开发工具: ...
- 将图片处理成圆形_如何把图片批量处理成指定/固定的文件大小/体积以内?
这里介绍的是类似这样的需求: 需要把一组图片批量处理成 宽度1000px,大小在150kb以内的jpeg格式. 01.打开工具链接 webp2jpg-online-在线图片格式转化器(无需上传)-we ...
- 如何将图片批量合并成PDF?
图片一般都只能一张一张的查看,如果遇到图片的数量较多,那么查看可保存起来就不是很方便,所以,为了方便起见,我们可以将图片批量合并成PDF文档,这样单个的PDF文档查看和保存及传阅都方便很多,下面就给大 ...
- Python图片批量压缩到指定大小并将JPG转为PNG格式
背景: 待压缩的图片大小有几十KB到近10M大小不等,且绝大部分图片为JPG格式.这些待压缩图片放在picture文件夹下 以及picture文件夹下的子文件夹中 现需要将picture文件夹下这些图 ...
- python将图片批量裁剪成圆形
此代码针对图片进行批量处理,如果需要处理单张图片的话,直接将输入改成单个图片即可 图片示例 首先需要将所选图片修改格式为正方形 import os from PIL import Image from ...
- 利用Python将图片批量改成任意格式
将图片格式改成任意格式,如将bmp改成jpg格式 代码如下: import glob import os import threading from PIL import Imagedef creat ...
- python图片批量重命名_python实现大量图片重命名
本文实例为大家分享了python实现大量图片重命名的具体代码,供大家参考,具体内容如下 说明 在进行深度学习的过程中,需要对图片进行批量的命名处理,因此利用简单的python代码实现图片的命名格式处理 ...
- Python图片批量自动抠图去背景
图片批量自动抠图去背景 今天发现个好东西啊,叫片刻抠图(pickwant.com),是一个在线对图片自动抠图去除背景的网站.只要上传图片,就可以自动把背景去掉把目标对象抠出来. 不管是动物.汽车或各种 ...
- python图片批量处理(水印、重命名)
源码说明 学习.工作中经常会遇到给多个图片添加水印或者重命名的情况,此时通过这个python编写的程序,就可以快速的将N个需要添加水印的图片 快速的处理,还支持透明度.水印位置等 批量处理图片源码: ...
最新文章
- Python入门(good)
- HDOJ 4876 ZCC loves cards
- mysql 以 db 结尾_MySQL的高级部分
- javascript Array学习与使用
- 禁止ultraiso开机自动加载镜像
- 147 · 水仙花数
- 韩剧爱情需要奇迹剧情在线
- eNSP配置VLAN间路由
- 关于android studio menu键的问题
- 微信公众号发送模板通知
- MT【352】极值点偏移
- DDD领域驱动设计-分层架构实践
- outlook自定义快捷键_如何自定义主题和Outlook邮件的格式
- Jenkins自动化部署前端Vue项目
- 使用Python操作XLS文件(wps中叫et)
- FFMpeg 否决问题
- Magic Leap开发指南(1)--开发前准备
- 高通骁龙平台芯片处理器(SoC)指南
- 外盘国际期货招商:原油市场热点话题
- android编程高级教程 pdf,Android多媒体开发高级编程