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

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

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

最近在训练图片方向分类器,需要对原始图片进行批量旋转操作,那如何用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到了么?

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

相关推荐

开发者工具及Windows 10 SDK开放下载

2015-07-3009:45:23作者:李熙微软在昨天开始正式推送Windows10,参与WindowsInsider项目的开发者们已经体验到最新版Win10。而现在,Windows10...

系统安装 :微软官方!最纯净WIN11安装U盘制作教程!

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:纯粹的测评小F★前言★大家好,我是纯粹的评测小F。今天给大家准备了【微软官方最纯净WIN1122H2系统U盘】教程,方便给大家做个参...

[Windows] 无损音乐下载器1.0(下载无损音乐播放器)

全免费的无损音乐下载器,音乐爱好者的利器。直接搜索关键字就可以下载。可能随时会被河蟹声明:软件都是来源于网络,有时效性,请及时下载安装,功能自测,侵权联系删除!...

一个Python编写的小说下载器(python小说自动生成器)

先看看效果昨天我们已经能够爬任意一本小说,今天我们用一个新的库--tkinter库做一个简单的图形界面,实现类似小说下载器那样的简单功能。先说一下tkinter库:Tkinter是Python的...

教你如何下载微软官方原版操作系统windows11

有些人害怕其他渠道下载的操作系统不纯净、被加料,想下载微软官方原版操作系统windows11,又不知道微软官方下载地址在哪里,其实很简单在必应搜索引擎就能够找到微软的官方网站下载地址,不过直接下载可能...

NAS下载不好用?群晖虚拟机安装Windows,打造下载机+远程管理!

开篇碎碎念相信不少小伙伴家中都有NAS,我手中就有一台蜗牛星际组装的NAS,用来做资料的存储和备份~因为我有喜欢下载资料的习惯,虽然群晖NAS有不少优秀的下载套件,但是有一些用起来不太习惯,比如迅雷和...

只需要简单几步,普通电脑也可以安装iTunes,尤其是Windows系统

随着苹果电脑、手机的出现,人们习惯了使用苹果系统,但却对Windows系列电脑的使用方法缺乏了解,以iTunes为例,很多用户以为只有苹果电脑或手机可以安装该软件,但实际上并不是这样,本期文章教各位...

多尺寸官方版Surface Pro、Laptop 5 Windows 11壁纸免费下载

SurfacePro9和SurfaceLaptop5不久前正式公布,在它们发布的同时,作为配套,微软在其MicrosoftStore免费上线了专门为它们设计的新壁纸。这些壁纸仍然带有Wind...

让Win10体验经典:Win7系统内置小游戏安装包下载

IT之家讯在Win10正式版中,各种经典小游戏都以Windows应用的形式回归了,《纸牌》系列更是被默认内置在系统中。不过仍然有用户怀念Win7时代的Win32版小游戏,其中《扫雷》、《纸牌》、《空...

Win10学院:UEFI模式安装Win10系统图文教程

IT之家(www.ithome.com):Win10学院:UEFI模式安装Win10系统图文教程如果您的新电脑使用的是UEFI而不是传统的BIOS,那么您的电脑会有更快的启动速度。UEFI被设计成能够...

7个PC端精品软件下载网站,授人予渔

相信大家在电脑端下载软件的时候,如果是在百度直接搜索,下载的软件会有很多捆绑软件,搞不好的还会有病毒。一些不懂的同学,一直这样操作就会让电脑很卡顿,今天给大家分享11个精品软件下载网站,每一个网站都有...

windows11官网正版下载流程(win11官网怎么下载)

windows11出来有一段时间了,最近刚好需要重做系统。那就试试新的win11吧。因为不喜欢各种第三方提供的下载,主要怕不安全。于是就从微软官网下载,现在把下载流程记录如下,方便需要的小伙伴。首先...

Windows上也能用Swift编程了,官方编译安装包已上线

萧箫发自凹非寺量子位报道|公众号QbitAI最近,Swift发行了5.3版本,这意味着它可以直接在Windows10上使用了。由于Swift是苹果开发的一门编程语言,能在Ubuntu、L...

没等到Windows 11 Moment 2更新?可直接下载更新包升级

Windows11KB5022913正在作为运行22H2的PC上的可选更新推出。它是备受期待的"Moment2"版本,具有许多新功能,如平板电脑优化的任务栏。如果操作系统没有提示升级,微软还公布...

三款高质量的Windows必备软件,良心高效,总有一款你用得到

DropltDroplt,是一款可以自动整理文档的软件神器。相信很多人,都有这样的习惯:闲来无事,喜欢将各种文件保存到桌面,时间一长,桌面图标就变得凌乱不堪,以致于在整理的时候,各种烦闷的情绪,涌上心...