首页 > 编程语言 >python PIL个人使用记录

python PIL个人使用记录

时间:2023-04-04 17:56:23浏览次数:47  
标签:PIL 记录 python filename gif path save os png

python PIL个人使用记录

1、gif转png

def gif_to_png(filename: str):
    """
    gif图片一帧一帧转换为很多png图片
    :param filename:
    :return:
    """
    filename = filename.strip()
    filename = os.path.abspath(filename)
    assert os.path.splitext(filename)[-1].lower() == '.gif', f'文件后缀不是.gif "{filename}"'  # 是否是.gif后缀
    assert os.path.isfile(filename), f'不存在文件"{filename}"'  # 是否存在文件
    index = 1
    basename = os.path.basename(filename)
    basename_without_suffix = basename.replace(os.path.splitext(filename)[-1], '')

    image = Image.open(filename)
    iterator: Iterator = ImageSequence.Iterator(image)  # GIF图片流的迭代器
    save_path = os.path.join('.', 'image', basename_without_suffix)
    save_path = os.path.abspath(save_path)
    if os.path.exists(save_path):
        shutil.rmtree(save_path)
    if not os.path.exists(save_path):
        os.makedirs(save_path)
    for img in iterator:  # img 是 GifImageFile对象
        save_name = os.path.join(save_path, f'frame_{index}.png')
        img.save(save_name)
        index += 1
    print(f"save to dir '{save_path}'")
    return save_path

01

image-20230404153820660

2、png转gif

def png_to_gif(path: str, filename: str):
    """
    遍历文件夹图片, 按照名称排序 然后合成gif图片
    :param path:
    :param filename:
    :return:
    """
    path = os.path.abspath(path.strip())
    assert os.path.isdir(path), f'不存在文件夹"{path}"'  # 是否存在文件

    filename = os.path.abspath(filename.strip())
    if not os.path.exists(os.path.dirname(filename)):
        os.makedirs(os.path.dirname(filename))

    files = os.listdir(path)
    files.sort(key=lambda x: int(str(x).replace('frame_', '').replace('.png', '')))
    frames = []  # 读入缓冲区
    for img in files:
        f = os.path.join(path, img)
        assert os.path.splitext(f)[-1].lower() == '.png', f'文件后缀不是.png "{filename}"'  # 是否是.png后缀
        frames.append(imageio.imread(f))
    imageio.mimsave(filename, frames, 'gif', duration=0.02)
    print(f"save to '{filename}'")
    return filename

学习链接 https://www.cnblogs.com/fly-kaka/p/11694011.html

3、获取所有像素点的颜色

def get_all_pixel(file):
    """
    获取所有的像素点的颜色
    :param file:
    :return:
    """
    img = Image.open(file)
    width = img.size[0]
    height = img.size[1]
    ret = list()
    for x in range(width):
        for y in range(height):
            pixel = img.getpixel((x, y))
            print(f"{x},{y} -----> {pixel}")
            ret.append(dict(x=x, y=y, pixel=pixel))
    return ret

github

标签:PIL,记录,python,filename,gif,path,save,os,png
From: https://www.cnblogs.com/rainbow-tan/p/17287234.html

相关文章

  • Python系列005
    控制设备仪器————电源初识importpyvisa#ConnecttotheGPIBinstrumentrm=pyvisa.ResourceManager()classPiDevice:def__init__(self,addressId):self.addressId=addressIddefPiPower(self):whoPower=rm.open_resource(self.a......
  • 学习笔记——Python基础
    字符串索引str='我是一名学生'print(str[0])#输出“我”print(str[-6])#输出“我”字符串切片:把数据对象的一部分拿出来str='我是一名学生'print(str[2:4])#输出“一名”print(str[-4:-2])#输出“一名”#获取字符串长度:len()str='我是一名学生'le......
  • 跟着查老四学Python Day 6:文件操作和异常处理
    文件操作例行寒暄之后,课程正式开始查老四:好的,我们来学习一下Python中的文件操作。文件操作是编程中非常基础和重要的一部分,它允许我们读取和写入文件。Python支持文本文件和二进制文件的读写,下面我们来逐一介绍。首先,我们需要打开一个文件。Python中使用open()函数来打开文件,它的语......
  • 【Python】ini解析ERROR:没有实例属性‘__getintem__’
    abaquspython搭配ini时,出现AttributeError:ConfigParserinstancehasnoattribute'getitem'20230404edit情况错误代码:fromConfigParserimportConfigParserconf=ConfigParser()conf.read(IniFilePath)layupFile=conf['DampCal']['lay......
  • maven compile/install 无法识别第三方引入的jar包
    有的jar包在互联网上并没有,而是自己本地私有的,lib引入后idea正常编译,但是maven无法识别,提示程序包不存在。可以将依赖工程打jar包后直接扔到本工程的WEB-INF/lib下。(可以直接将编译后的class下的几个文件夹压缩成zip,然后直接修改名称为xxx.jar) ......
  • Python 内置函数map()
    内置函数mapmap(func,可迭代对象1,可迭代对象2...)map函数可以接收一个函数和一个或多个可迭代对象。接收的func函数有几个参数,就需要接收几个可迭代对象。map接收的函数会作用于可迭代对象的每个元素,并且返回一个值。map将可迭代对象的每个元素经过func函数处理返回的值组成......
  • flask:Flask 和pythonweb框架介绍、flask快速使用、登录,显示用户信息小案例、配置文件
    目录一、Flask和pythonweb框架介绍1.1pythonweb框架介绍1.2flask介绍1.3wsgiref1.4用wsgirf和werkzeug写web二、flask快速使用三、登录,显示用户信息小案例3.1login.html3.2home.html3.3detail.html3.4py文件3.5知识点总结四、配置文件的使用方式1、设置方式一(测试中使用的......
  • 用python实现简单的版本号生成工具
    用python实现简单的版本号生成工具我们发布比较频繁,每次发布都需要从release分支打1个tag,不过可能是因为年纪大了的缘故吧,尽管借鉴了一些版本号的制定规则,不过每次我都记不太住,需要翻文档去重新复习,不如把这步自动化一下,为未来的自己节约一点时间,另外有了工具就好统一规则,后面所......
  • python-torch numpy matploit pandas
    title:深度学习基础torchnumpypandasmatplotlibnumpy数组对象是NumPy中最核心的组成部分,这个数组叫做ndarray,是“N-dimensionalarray”的缩写。其中的N是一个数字,指代维度.在NumPy中,数组是由numpy.ndarray类来实现的,它是NumPy的核心数据结构。而Python......
  • Python3内置函数之R系列
    1、range()在Python中,range()函数用于创建一系列数字的序列,常用于for循环中,可以接受1到3个参数,具体形式如下:range(stop):表示生成从0开始到stop-1结束的整数序列,步长为1。range(start,stop):表示生成从start开始到stop-1结束的整数序列,步长为1。range(start,stop,step)......