PYTHON 自动化办公:更改图片尺寸大小

server/2024/12/19 13:58:00/

1. 前言

在之前的文章中,介绍了图片的压缩技术,这里讲解如何利用python批量将图片改为指定后缀的格式。当然,也可以为深度学习批量更改文件后缀,例如在分割中,可能需要img和mask的图片名称完全一致等等

如有需要,参考本专栏其他博文

2. 单张图片更改尺寸

代码如下:

因为有的图片名称很长,甚至中途还会将后缀出现,例如 sda1233pngddwsa.png

但无论怎样风骚的文件名,不可能出现带 . + 后缀 的字符串,因为会直接报错。所以这里image_format 列表文件名都加了 . 方便遍历

import cv2def main(img_path, size=(256,256)):image_format = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.ai', '.cdr', '.eps']  # 常见的图片后缀名for i in image_format:if i in img_path:ret_path = img_path.split(i)[0]  # 文件名ret_path = ret_path + '.jpg'   # 返回的图片名img =cv2.imread(img_path)img = cv2.resize(img,size)cv2.imwrite(ret_path,img)if __name__ == '__main__':root = 'a.jpg'       # 传入图片的路径img_size = (256,256)        # sizemain(img_path=root, size=img_size)

3. 单个目录下所有图片更改

将所有需要更改的图片放在同一目录下即可:

import cv2
import os
from tqdm import tqdmdef main(folder_path,size=(256,256)):ret_folder_path = folder_path + '_ret'  # 返回父目录if not os.path.exists(ret_folder_path):  # 建立目录os.makedirs(ret_folder_path)img_path = [i for i in os.listdir(folder_path)]  # 所有图片路径for i in tqdm(img_path):img = os.path.join(folder_path, i)img = cv2.imread(img)  # 打开图片img = cv2.resize(img,size)cv2.imwrite(os.path.join(ret_folder_path, i),img)if __name__ == '__main__':root = 'test'  # 多个图片的父目录size = (256,256)main(folder_path=root,size=size)

4. 多个目录下图片更改

要将多个目录放在一个大的父目录下:

import cv2
import os
from tqdm import tqdmdef main(img_path, img_fm,size):image_format = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.ai', '.cdr', '.eps']  # 常见的图片后缀名# 返回的新目录ret_folder_path = img_path + '_ret'if not os.path.exists(ret_folder_path):os.makedirs(ret_folder_path)sub_folder = [i for i in os.listdir(img_path)]for sf in tqdm(sub_folder):os.makedirs(os.path.join(ret_folder_path, sf))for i in os.listdir(os.path.join(img_path, sf)):  # 图片名for j in image_format:if j in i:ret_path = i.split(j)[0]  # 文件名ret_path = ret_path + '.' + img_fm  # 返回的图片名try:img = cv2.imread(os.path.join(img_path, sf, i))img = cv2.resize(img,size)cv2.imwrite(os.path.join(ret_folder_path, sf, ret_path),img)except:passif __name__ == '__main__':root = 'test'  # 传入图片文件夹目录img_format = 'jpg'  # 待更改的后缀格式 jpg png jpeg ...size = (300,300)main(img_path=root, img_fm=img_format,size=size)


http://www.ppmy.cn/server/151454.html

相关文章

Oracle 三个生产案例问题分析

1. 案例一:表空间暴涨 1.1. 问题背景 一个平时不怎么增长的表空间连续告警,持续加了几百G的空间短时间被耗光。 1.2. 问题排查 1.2.1. 统计表空间的日增长量 通过统计表空间的日增长量可以看出有几天表空间的增长量是有 100 多 G 一天。 # 统计表空…

Linux下常用的网络编程函数详解

在网络编程中,我们经常需要处理 IP 地址和端口号等数据,这些数据需要在主机字节序(Host Byte Order)与网络字节序(Network Byte Order)之间进行转换。 什么是字节序? 字节序指的是多字节数据在…

青少年编程与数学 02-004 Go语言Web编程 08课题、使用Gin框架

青少年编程与数学 02-004 Go语言Web编程 08课题、使用Gin框架 一、Gin框架二、接收和处理请求三、应用示例 课题摘要:本文介绍了Gin框架的特点、如何接收和处理请求以及一个应用示例。Gin是一个高性能、轻量级的Go语言Web框架,以其快速、极简设计、强大的路由和中间…

Dockerfile文件编写

目录 Dockerfile文件编写 1.什么是Dockerfile 2. Dockerfile作用 3.dockerfile 的基本结构: 4.dockerfile指令: FROM 指定基础镜像,dockerfile构建镜像的第一个指令 LABEL 指定镜像维护人信息 ADD/COPY 复制本地文件/目录到镜像中 …

React 组件间的通信

React 父传子 实现&#xff1a; function Son(props){return <div>{ props.name }</div> } ​ ​ function App(){const name this is app namereturn (<div><Son name{name}/></div>) } 注意&#xff1a;这里可以传递任何类型&#xff0c;…

C语言 排序

时间:2024.12.18 一、冒泡排序(Bubble Sort) 原理 比较相邻的元素。如果第一个比第二个大,就交换它们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越…

电脑文档损坏:原因剖析和修复方法

在使用电脑的过程中&#xff0c;许多用户可能会遇到文档突然提示损坏、无法打开的情况。这种情况的发生往往让人感到困惑&#xff0c;特别是当并未进行任何明显错误操作时。以下是一些常见的原因以及应对方法。 一、文档损坏的常见原因 1、非人为的异常操作&#xff1a; 在编…

【CC2530开发基础篇】继电器模块使用

一、前言 1.1 开发背景 本实验通过使用CC2530单片机控制继电器的吸合与断开&#xff0c;深入了解单片机GPIO的配置与应用。继电器作为一种常见的电气控制元件&#xff0c;广泛用于自动化系统中&#xff0c;用于控制大功率负载的开关操作。在本实验中&#xff0c;将通过GPIO口…