百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

「亲测可用」如何用python脚本批量旋转图片为任意角度?

yund56 2025-03-02 19:34 8 浏览

最近在训练图片方向分类器,需要对原始图片进行批量旋转操作,那如何用python脚本实现批量旋转图片为任意角度呢?

此处,以将我的头像旋转90度为例进行演示。

实现图片批量旋转的python源代码如下:

#-*- coding: UTF-8 -*-
 
import os
import shutil 
from PIL import Image
import fire


imgFormats = ['jpg', 'png', 'jpeg', 'bmp', 'gif']

# 递归获得文件夹下所有文件
def get_fileList(inputDir):
    fileList = []
    for home, dirs, files in os.walk(inputDir):
        for file in files:
            # 文件名列表,包含完整路径
            fileList.append(os.path.join(home, file))
            # # 文件名列表,只包含文件名
            # Filelist.append( filename)
    return fileList

# 判断是否是图片
def isImage(imgPath):
    extension = imgPath.rsplit('.',1)[-1]
    if extension in imgFormats:
        return True
    else:
        return False

# 根据输入的图片文件完整路径和旋转角度,生成旋转后的图片并保存
# 旋转角度是一个标签值,如输入为n,则实际逆时针旋转90*n度
def rotate_img(imgPath, degree):
    img_rotate  = Image.open(imgPath)
    if degree == 1:
        img_rotate = img_rotate.transpose(Image.ROTATE_90)
    elif degree == 2:
        img_rotate = img_rotate.transpose(Image.ROTATE_180)
    elif degree == 3:
        img_rotate = img_rotate.transpose(Image.ROTATE_270)
    else:
        img_rotate = img_rotate.rotate(degree*90)

    img_rotate.save(imgPath)


def rotate_imgs(inputDir, degree):
    copyDir = ''.join([inputDir, '_rotated_', str(degree)])  
    # ps: 若copyDir已存在,则会报错
    shutil.copytree(inputDir, copyDir)
    fileList = get_fileList(copyDir)
    imgCount = 0
    for file in fileList:
        print(file)
        fileNoExtension = file.rsplit('.', 1)[0]
        fileExtension = file.rsplit('.', 1)[1]
        if fileExtension == 'txt':
            with open(file, 'w') as f:
                f.write(str(degree))
        if isImage(file):
            imgCount += 1
            rotate_img(file, degree)

        os.rename(file, ''.join([fileNoExtension, '_', str(int(degree*90)), '.', fileExtension]))
    print(' '.join(['total', str(imgCount), 'pictures rotated']))


 
if __name__ == '__main__':
    fire.Fire(rotate_imgs)

源代码运行结果如下:


需要说明的是,源代码运行时需要输入两个参数:一是指定图片文件夹的路径,二是要旋转的角度,本文中是以90度的倍数为例,若要实现旋转为任意角度,可以将90改为对应数值即可,你get到了么?

【总结】因编辑水平有限,文中难免存在个别错误或疏漏,欢迎大家留言区批评指正~~

相关推荐

七夕前学起来,程序员的浪漫:三十行代码实现用她的名字作幅画

hello,各位小伙伴们大家早上|中文|晚上|凌晨好,相信看这篇文章的有很多新朋友,估计也有少量的老朋友,首先做个简短的自我介绍,我是一灰灰,码农界的资深搬运工;今天呢,没有站在我身边的捧哏老师,那就...

127.手摇计算机的收藏(我的民间收藏笔记)

1970年代前后,我国生产的手摇计算机,主要有上海飞鱼牌和通用牌手摇计算机,天津文化牌手摇计算机。这几种手摇计算机的收藏价,目前很不统一。品相好又能使用的收藏价大概为1500—7000元。品相不好又...

计算机毕业设计Hadoop+Hive+PySpark小说推荐系统 小说可视化

基于Spark+hadoop大数据小说数据分析推荐系统(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)直拍源码包部署爬虫可用基于用户协同过滤算法开发技术介绍编辑器:Pychar...

win7系统exe病毒文件夹怎么删除

Win7系统中exe病毒文件夹如何删除?下面为大家提供解决办法,快来了解吧!1、按下Win+R快捷键,输入gpedit.msc,所示,即可打开组策略编辑器。2、依次展开计算机配置下的管理模板,进入...

Windows 10 网络搜索设计太反人类?教你如何彻底关闭它

来源:太平洋电脑网我们知道微软在Windows10中,特别加强了系统的搜索功能,但Windows10的搜索的确很难称得上好用。抛开效率低下、呈现结果少、造成系统卡顿等老生常谈的问题不论,在功能设计...

win7系统exe病毒文件夹怎么删除?

经常遇到病毒文件夹,它们通常是带有exe后缀的文件夹名称,双击后会复制病毒。今天就教大家如何删除这些病毒文件夹。1、打开开始菜单,点击运行按钮;或者按下Win+R键,即可开启运行对话框。2、运行窗...

通过代码编写电脑关机程序

大家好,我是Anyday这期给大家分享的电脑小知识是通过代码编写程序进行关机。首先在桌面右键新建一个文本文档双击打开新建文档,在里面输入shutdown–s–t0,这就是我们上一期的关机代码(聪...

可视化程序设计必备书:从零开始Qt可视化程序设计

“可视化程序设计”是理工科极为重要的一门专业课程,实践性很强。其教学目标是使学生掌握可视化程序设计的基本方法、编程技能并具备上机调试能力,熟悉界面设计,掌握各种常用类(有些开发工具称控件,实...

重要通知!25年公务员专业参考目录已出!

大家关心的2025年江苏省公务员考试消息有了!一年一度江苏省公开征求对《江苏省2025年度考试录用公务员专业参考目录》的意见和建议公告出了!各地的公务员专业参考目录其实都查不多,江苏针对今年的具体情况...

计算机二级考试中的一些注意事项

科教武汉【计算机二级考试中的一些注意事项】1、要合理安排做题时间可以先通过观察整个题目的题形,判断整个试卷的难点,通过观察题型然后确定自己的应对策。选择题建议用时15-20分钟为好。自己要有一个时间...

天津专升本计算机知识点 选定文件和文件夹

在Windows7系统中,进行选定,包括多种,考试重点内容有三种。①选定多个连续的文件或文件夹,可用Shift键配合鼠标进行选定②选定多个不连续的文件或文件夹,可用Ctrl键配合鼠标进行选定③撤销某...

最新发布!四川这些岗位急需紧缺人才

12月17日,《四川省人力资源服务业急需紧缺人才目录》发布。据介绍,《四川省人力资源服务业急需紧缺人才目录》采集600余家用人单位信息,调查整理了40余家用人单位需求,从收集的上千条岗位信息中分析出3...

最新!普通高等学校本科专业目录(2024年)!共816种本科专业

高考成绩已定,目前最重要的,就是填报高考志愿了!!!(点击查看:广西2024高考分数线、一分一档表公布!今天开始填志愿!附前3年高考分数线、一分一档表)除了要在1308所本科大学中选出自己(孩子)喜欢...

cad文件夹加密

我学计算机辅助设计,常用CAD绘制图纸并存入文件夹。有时担心关机后设计被窃,便在网上寻找解决办法,最终找到了一种加密CAD文件夹的实用方法,有效保护了我的设计成果。1、首先,我们需要安装一款保护文件...

文件夹加密大师使用方法:快速加密文件指南

不想让他人看到私密文件?以下几种隐藏文件的方法各有优缺点,快来看看哪种最适合你!1、隐藏的文件夹2、首先,右击文件夹选择属性,在常规选项卡勾选隐藏,然后点击确定。3、若文件夹为隐藏状态,打开我的...