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

【Python】图片处理

一、获取图片尺寸

优点缺点
Pillow功能丰富,支持多种图像处理操作。
使用简单,适合快速原型开发。
对于处理大型图像或批量图像时,性能可能不如OpenCV。
OpenCV性能强大,适合处理大型图像和视频处理。
提供了丰富的计算机视觉算法。
相对来说,使用起来可能比Pillow复杂一些。
imageio支持多种图像格式,使用方便。功能相对较少,主要用于图像的读取和写入。
os无需安装额外的库,使用简单。不能直接获取图片的宽度和高度,只能获取文件大小。

1、Pillow

安装:

pip install Pillow

使用:

from PIL import Image

img = Image.open('C:/Users/admin/Pictures/demo.jpg')
print(img.size, img.width, img.height, img.format)

运行结果:

(534, 300)
534 300 JPEG

2、OpenCV

安装:

pip install opencv-python

使用:

import cv2

image = cv2.imread('example.jpg')
print(image.shape)

运行结果:

(300, 534, 3)

3、imageio

安装:

pip install imageio

使用:

import imageio

image = imageio.imread('example.jpg')
height, width = image.shape[:2]
print(f"图片宽度: {width}, 图片高度: {height}")

运行结果:

图片宽度:1024, 图片高度:1024

4、os

使用os库获取图片文件的大小(以字节为单位)

import os

file_size = os.path.getsize('example.jpg')
print(file_size)

运行结果:

1285917

二、修改图片名称

1、os

import os
 
def rename_images(folder_path, prefix):
    files = os.listdir(folder_path)
    for i, file in enumerate(files):
        if file.endswith(".jpg") or file.endswith(".png"):
            new_name = f"{prefix}_{i+1}.jpg"
            os.rename(os.path.join(folder_path, file), os.path.join(folder_path, new_name))
 
folder_path = "/path/to/folder"  # 图片所在文件夹路径
prefix = "new_name"  # 新的文件名前缀
rename_images(folder_path, prefix)

2、shutil

import os
import shutil
 
def rename_images(folder_path, prefix):
    files = os.listdir(folder_path)
    for i, file in enumerate(files):
        if file.endswith(".jpg") or file.endswith(".png"):
            new_name = f"{prefix}_{i+1}.jpg"
            shutil.move(os.path.join(folder_path, file), os.path.join(folder_path, new_name))
 
folder_path = "/path/to/folder"  # 图片所在文件夹路径
prefix = "new_name"  # 新的文件名前缀
rename_images(folder_path, prefix)

3、pathlib

from pathlib import Path
import re
 
def rename_images(folder_path, prefix):
    pattern = re.compile(r"\.\w+$")  # 正则表达式匹配文件扩展名
    folder_path = Path(folder_path)
    for i, file in enumerate(folder_path.glob("*")):
        if file.is_file() and pattern.search(file.name):
            new_name = pattern.sub(f"_{i+1}.jpg", file.name)
            new_path = folder_path.joinpath(new_name)
            file.rename(new_path)
 
folder_path = "/path/to/folder"  # 图片所在文件夹路径
prefix = "new_name"  # 新的文件名前缀
rename_images(folder_path, prefix)

三、参考链接

  • python如何获取图片大小

http://www.kler.cn/a/384841.html

相关文章:

  • git提交冲突的原因及解决方案
  • 【CUDA】线程配置
  • MyBatis几种SQL写法
  • 安卓智能指针sp、wp、RefBase浅析
  • AI - 人工智能;Ollama大模型工具;Java之SpringAI(三)
  • HCIP--3实验- 链路聚合,VLAN间通讯,Super VLAN,MSTP,VRRPip配置,静态路由,环回,缺省,空接口,NAT
  • 一招解决Mac没有剪切板历史记录的问题
  • Go八股(Ⅳ)***slice,string,defer***
  • scala Map训练
  • MongoDB面试专题33道解析
  • fastadmin后台列表根据所选中的行统计指定字段|fastadmin点击checkbox或反选统计某个字段的值
  • 关于git命令
  • 潮玩宇宙方块兽系统开发:可定制UI与多种游戏内嵌助力个性化体验
  • 【JAVA毕业设计】基于Vue和SpringBoot的图书馆管理系统
  • GS-SLAM论文阅读--High-Fidelity SLAM Using Gaussian Splatting
  • 设计模式之——观察者模式
  • Vue3+element-plus摘要
  • 从零学习大模型(十四)-----量化(一)
  • Autosar 存储闲聊:使用EEP配Flash存储方案的可靠性和耐久性
  • 文件系统和日志管理
  • 基于java+SpringBoot+Vue的协力服装厂服装生产管理系统设计与实现
  • 数据分析的力量如何驱动商业决策和创新发展
  • 开源AI图片处理工具HivisionIDPhotos安装与证件照制作指南
  • STM32中ARR(自动重装寄存器)为什么要减1
  • STL之string的使用(超详解)
  • 一、初识C语言(1)