我们平时获取的图片都是矩阵居多,现在如何怎么这些矩形处理成正方形呢

正方形的处理方式一般有这两种,一种是裁剪掉较长边的长度与宽等长,另一种则是填充将较宽的边与较长边等长。

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-图片批量处理成正方形相关推荐

  1. Python将bmp格式的图片批量转成jpg

    # *_* coding : UTF-8 *_* # 开发人员: csu·pan-_-|| # 开发时间: 2020/11/21 12:40 # 文件名称: bmp_to_jpg.py # 开发工具: ...

  2. 将图片处理成圆形_如何把图片批量处理成指定/固定的文件大小/体积以内?

    这里介绍的是类似这样的需求: 需要把一组图片批量处理成 宽度1000px,大小在150kb以内的jpeg格式. 01.打开工具链接 webp2jpg-online-在线图片格式转化器(无需上传)-we ...

  3. 如何将图片批量合并成PDF?

    图片一般都只能一张一张的查看,如果遇到图片的数量较多,那么查看可保存起来就不是很方便,所以,为了方便起见,我们可以将图片批量合并成PDF文档,这样单个的PDF文档查看和保存及传阅都方便很多,下面就给大 ...

  4. Python图片批量压缩到指定大小并将JPG转为PNG格式

    背景: 待压缩的图片大小有几十KB到近10M大小不等,且绝大部分图片为JPG格式.这些待压缩图片放在picture文件夹下 以及picture文件夹下的子文件夹中 现需要将picture文件夹下这些图 ...

  5. python将图片批量裁剪成圆形

    此代码针对图片进行批量处理,如果需要处理单张图片的话,直接将输入改成单个图片即可 图片示例 首先需要将所选图片修改格式为正方形 import os from PIL import Image from ...

  6. 利用Python将图片批量改成任意格式

    将图片格式改成任意格式,如将bmp改成jpg格式 代码如下: import glob import os import threading from PIL import Imagedef creat ...

  7. python图片批量重命名_python实现大量图片重命名

    本文实例为大家分享了python实现大量图片重命名的具体代码,供大家参考,具体内容如下 说明 在进行深度学习的过程中,需要对图片进行批量的命名处理,因此利用简单的python代码实现图片的命名格式处理 ...

  8. Python图片批量自动抠图去背景

    图片批量自动抠图去背景 今天发现个好东西啊,叫片刻抠图(pickwant.com),是一个在线对图片自动抠图去除背景的网站.只要上传图片,就可以自动把背景去掉把目标对象抠出来. 不管是动物.汽车或各种 ...

  9. python图片批量处理(水印、重命名)

    源码说明 学习.工作中经常会遇到给多个图片添加水印或者重命名的情况,此时通过这个python编写的程序,就可以快速的将N个需要添加水印的图片 快速的处理,还支持透明度.水印位置等 批量处理图片源码: ...

最新文章

  1. Python入门(good)
  2. HDOJ 4876 ZCC loves cards
  3. mysql 以 db 结尾_MySQL的高级部分
  4. javascript Array学习与使用
  5. 禁止ultraiso开机自动加载镜像
  6. 147 · 水仙花数
  7. 韩剧爱情需要奇迹剧情在线
  8. eNSP配置VLAN间路由
  9. 关于android studio menu键的问题
  10. 微信公众号发送模板通知
  11. MT【352】极值点偏移
  12. DDD领域驱动设计-分层架构实践
  13. outlook自定义快捷键_如何自定义主题和Outlook邮件的格式
  14. Jenkins自动化部署前端Vue项目
  15. 使用Python操作XLS文件(wps中叫et)
  16. FFMpeg 否决问题
  17. Magic Leap开发指南(1)--开发前准备
  18. 高通骁龙平台芯片处理器(SoC)指南
  19. 外盘国际期货招商:原油市场热点话题
  20. android编程高级教程 pdf,Android多媒体开发高级编程

热门文章

  1. 7个基础的臀部练习,高效刺激臀部肌肉,快速虐出翘臀!
  2. Go语言自学系列 | golang开发vscode快捷键
  3. [转载]打工辛酸路:我是一朵飘零的花之24
  4. 【Local/docker-compose】安装Celery并启动beat定时任务-20220823
  5. 25-文件与目录总结
  6. 菜鸡学Unity 之 Unity中的基本模型和场景操作
  7. BUUCTF:Had a bad day
  8. Google Play第一次发布的应用商店看不到
  9. Linux命令行配置网络
  10. 2017-2018-2 20155314《网络对抗技术》Exp8 Web基础