Python技巧之实现批量统一图片格式和尺寸

 更新时间:2023年05月06日 14:13:02   作者:逃逸的卡路里  
大家在工作的时候基本都会接触到很多的图片,有时为了不同的工作需求需要修改图片的尺寸或者大小。本文为大家整理了Python批量转换图片格式和统一图片尺寸,希望对大家有所帮助

前言

大家在工作的时候是不是都会接触到很多的图片,为了满足不同的需求:

兼容性:不同设备和应用程序可能支持不同的图片格式。通过转换图片格式,可以确保在各种设备和应用程序中都能够正确地显示图片。

文件大小:不同的图片格式具有不同的文件大小。有时候,将图片从一种格式转换为另一种格式可以显著减小文件大小,这有助于在网络上更快地加载图片。

质量:有些图片格式对于特定类型的图像效果更好。通过转换图片格式,可以选择更适合特定图像的格式,从而提高图像质量。

编辑能力:不同的图片格式支持不同的编辑功能。通过将图片转换为支持所需编辑功能的格式,可以更轻松地进行编辑工作。

如果我们需要把图片转换成文件,用Python学习的知识是不是能实现呢?

Python模块之Image的应用示例

1.首先需要导入需要的图像库:

import Image

2.读取一张图片:

im=Image.open(‘/home/Picture/test.jpg')

3.显示一张图片:

im.show()

4.保存图片:

im.save(“save.gif”,“GIF”) #保存图像为gif格式

5.创建新图片:

Image.new(mode,size)
Image.new(mode,size,color)

栗子:

newImg = Image.new(“RGBA”,(640,480),(0,255,0))
newImg.save(“newImg.png”,“PNG”)

6.两张图片相加:

Image.blend(img1,img2,alpha) # 这里alpha表示img1和img2的比例参数

7.点操作:

im.point(function) #,这个function接受一个参数,且对图片中的每一个点执行这个函数

比如:

out=im.point(lambdai:i*1.5)#对每个点进行50%的加强

8.查看图像信息:

im.format, im.size, im.mode

9.图片裁剪:

box=(100,100,500,500)
#设置要裁剪的区域
region=im.crop(box) #此时,region是一个新的图像对象。

10.图像黏贴(合并)

im.paste(region,box)#粘贴box大小的region到原先的图片对象中。

11.通道分离:

r,g,b=im.split()#分割成三个通道,此时r,g,b分别为三个图像对象。

12.通道合并:

im=Image.merge(“RGB”,(b,g,r))#将b,r两个通道进行翻转。

13.改变图像的大小:

out=img.resize((128,128))#resize成128*128像素大小

14.旋转图像:

out=img.rotate(45) #逆时针旋转45度

有更方便的:

region = region.transpose(Image.ROTATE_180)

15.图像转换:

out = im.transpose(Image.FLIP_LEFT_RIGHT)
#左右对换
out = im.transpose(Image.FLIP_TOP_BOTTOM)
#上下对换

16.图像类型转换:

im=im.convert(“RGBA”)

17.获取某个像素位置的值:

im.getpixel((4,4))

18.写某个像素位置的值:

img.putpixel((4,4),(255,0,0))

图片批量转换和尺寸调整代码示例

'''
  图片格式批量转换
'''
def istype(filetype):
    '''
    判断是否为图片文件
    :param filetype: 文件扩展名
    :return: 是,返回True,不是,返回False
    '''
    filetype = filetype.lower() # 扩展名转换为小写
    # 判断是否为图片格式
    if filetype == '.jpg' or filetype=='.jpeg' or filetype=='.png' or filetype=='.gif' or filetype=='.bmp' or filetype=='.tif':
        return True # 返回True
    else:
        return False

def thumpic(filepath, width, height):
    try:

        image = Image.open(filepath) # 打开图片文件
        # 按指定大小对图片进行缩放(不一定完全按照设置的宽度和高度,而是按比例缩放到最接近的大小)
        image.thumbnail((width, height))
        # 下面的方法会以严格按指定大小对图片进行缩放,但可能会失真
        # image = image.resize((width, height))
        image.save(filepath) # 保存缩放后的图片
        # print('图片处理完成……')
        # os.startfile(path) # 打开指定路径进行预览
    except Exception as e:
        print(e)
        
import os
from PIL import Image
while True:
    oldpath = input('请输入要转换格式的图片路径:')
    newpath = input('请输入转换格式后的图片保存路径:')
    flag = int(input('''要转换的格式:
1、jpg  2、jpeg  3、png  4、gif  5、bmp  6、tif
请选择:'''))
    width=int(input('请输入宽度限制:'))
    height=int(input('请输入高度限制:'))
    list = os.listdir(oldpath)  # 遍历选择的文件夹
    for i in range(0, len(list)):  # 遍历文件列表
        filepath = os.path.join(oldpath, list[i])  # 记录遍历到的文件名
        if os.path.isfile(filepath):  # 判断是否为文件
            filename= os.path.splitext(list[i])[0]  # 获取文件名
            filetype = os.path.splitext(list[i])[1]  # 获取扩展名
            if istype(filetype):  # 判断是否为图片文件
                img = Image.open(filepath)  # 打开图片文件
                # 根据选择的格式转换图片,并保存
                if flag == 1:
                    img=img.convert('RGB') # 将图片转换为RGB格式,因为jpg格式不支持透明度
                    img.save(os.path.join(newpath,filename+'.jpg'),'jpeg')
                    thumpic(os.path.join(newpath,filename+'.jpg'), width, height)
                elif flag == 2:
                    img = img.convert('RGB')
                    img.save(os.path.join(newpath, filename + '.jpeg'),'jpeg')
                    thumpic(os.path.join(newpath,filename+'.jpeg'), width, height)
                elif flag == 3:
                    img.save(os.path.join(newpath, filename + '.png'),'png')
                    thumpic(os.path.join(newpath,filename+'.png'), width, height)
                elif flag == 4:
                    img.save(os.path.join(newpath, filename + '.gif'),'gif')
                    thumpic(os.path.join(newpath,filename+'.gif'), width, height)
                elif flag == 5:
                    img.save(os.path.join(newpath, filename + '.bmp'),'bmp')
                    thumpic(os.path.join(newpath,filename+'.bmp'), width, height)
                elif flag == 6:
                    img.save(os.path.join(newpath, filename + '.tif'), 'tiff')
                    thumpic(os.path.join(newpath,filename+'.tif'), width, height)
    os.startfile(newpath)
    
    print('格式转换完成……')

到此这篇关于Python技巧之实现批量统一图片格式和尺寸的文章就介绍到这了,更多相关Python图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python常用函数random()函数详解

    python常用函数random()函数详解

    这篇文章主要介绍了python常用函数random()函数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • python实现简单的文字识别

    python实现简单的文字识别

    这篇文章主要为大家详细介绍了基于百度云文字识别API,python实现的简单文字识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python中常用的统计检验代码分享

    Python中常用的统计检验代码分享

    统计检验是数据分析中的重要工具,用于检验数据集中的差异、关联和分布等统计性质,本文为大家整理了常见的统计检验方法,希望对大家有所帮助
    2024-01-01
  • python实现k-means聚类算法

    python实现k-means聚类算法

    这篇文章主要为大家详细介绍了python实现k-means聚类算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 如何使用python-dotenv解决代码与敏感信息的分离

    如何使用python-dotenv解决代码与敏感信息的分离

    我们开发的每个系统都离不开配置信息,这些信息都非常敏感,一旦泄露出去后果非常严重,被泄露的原因一般是程序员将配置信息和代码混在一起导致的,这篇文章主要给大家介绍了关于如何使用python-dotenv解决代码与敏感信息的分离,需要的朋友可以参考下
    2022-03-03
  • 在Python中使用zlib模块进行数据压缩的教程

    在Python中使用zlib模块进行数据压缩的教程

    这篇文章主要介绍了在Python中使用zlib模块进行数据压缩的教程,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • python密码学简单替代密码解密及测试教程

    python密码学简单替代密码解密及测试教程

    这篇文章主要介绍了python密码学简单替代密码解密及测试教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python 密码学示例——凯撒密码的实现

    python 密码学示例——凯撒密码的实现

    这篇文章主要介绍了python 密码学示例——凯撒密码的实现,帮助大家更好的利用python处理密码,感兴趣的朋友可以了解下
    2020-09-09
  • Scrapy框架介绍之Puppeteer渲染的使用

    Scrapy框架介绍之Puppeteer渲染的使用

    这篇文章主要介绍了Scrapy框架介绍之Puppeteer渲染的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 使用Python轻松完成垃圾分类(基于图像识别)

    使用Python轻松完成垃圾分类(基于图像识别)

    这篇文章主要介绍了使用Python轻松完成垃圾分类(基于图像识别),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论