技巧 | Python 图片转换GIF/视频

简介: 技巧 | Python 图片转换GIF/视频

大家好,我是欧K。本期为大家介绍两个图片转GIF/视频的Python库--imageio/cv2希望对你有所帮助。

先看看效果:

,时长00:06


1. 图片获取

1.1 导入模块

import os
import time
import requests
import imageio
import cv2
from PIL import Image

果没有相应的包直接pip install xxx即可(推荐使用国内镜像安装)。


1.2 爬取每日气温图片


来源:中央气象台

链接:http://www.nmc.cn/

以端午节(2021-06-14)全国逐时气温为例:


代码:

# 抓取图片
def get_pics(date, path):
    year = date.split('-')[0]
    mon = date.split('-')[1]
    day = int(date.split('-')[2])
    for i in range(24):
        time.sleep(3)
        # 08:00-24:00
        if i < 17:
            url = 'http://image.nmc.cn/product/{0}/{1}/{2:0>2d}/STFC/medium/SEVP_NMC_STFC_SFER_ET0_ACHN_L88_PB_{0}{1}{2:0>2d}{3:0>2d}0000000.jpg'.format(
                year, mon, day, i)
            img = requests.get(url)
            fiename = '{}{}h.png'.format(path, i + 8)
            with open(fiename, 'ab') as f:
                f.write(img.content)
        # 01:00-07:00
        else:
            url = 'http://image.nmc.cn/product/{0}/{1}/{2:0>2d}/STFC/medium/SEVP_NMC_STFC_SFER_ET0_ACHN_L88_PB_{0}{1}{2:0>2d}{3}0000000.jpg'.format(
                year, mon, day - 1, i)
            img = requests.get(url)
            fiename = '{}{}h.png'.format(path, i - 17)
            with open(fiename, 'ab') as f:
                f.write(img.content)

效果:

2. 图片转GIF

2.1 读取本地图片

代码:

# 读取本地图片
def find_pics(date, path):
    # 读取文件夹
    imagelist = os.listdir(path)
    gifname = '{}.gif'.format(date)
    videoname = '{}.avi'.format(date)
    # 排序
    imagelist.sort(key=lambda x: int(x[:-5]))
    imagelist = [path + ff for ff in imagelist]
    #帧间隔
    duration = 0.6
    create_gif(imagelist, gifname, duration)
    create_video(imagelist, videoname)

注意文件排序。


2.2 生成.gif

代码:

# 生成gif
def create_gif(imagelist, gifname, duration = 1.0):
    frames = []
    for image_name in imagelist:
        frames.append(imageio.imread(image_name))
    # 保存gif
    imageio.mimsave(gifname, frames, 'GIF', duration=duration)

效果:


3. 图片转视频


3.1 VideoWriter()


VideoWriter()的参数有filename, fourcc, fps, frameSize, isColor

  • filename:需要生成的视频的名字
  • fourcc:用于压缩框架的解码器的4位编码
  • fps:每秒的视频帧数
  • frameSize:视频画面的尺寸(这里需要与用于合成视频的图片尺寸一致)
  • isColor:如果该位值为Ture,解码器会进行颜色框架的解码,否则会使用灰度进行颜色架构(该功能仅支持在Windows系统中使用)


3.2 生成.avi 代码:


# 生成video
def create_video(imagelist,videoname):
    image = Image.open(imagelist[0])
    fourcc = cv2.VideoWriter_fourcc(*"MJPG")
    cap_fps = 1
    video = cv2.VideoWriter(videoname, fourcc, cap_fps, image.size)
    for filename in imagelist:
        img = cv2.imread(filename)
        video.write(img)
    video.release()

效果:


image.png


也可自定义图片转换:

完。

END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道

相关文章
|
1月前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
28 1
|
1月前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
66 0
|
1月前
|
机器学习/深度学习 编解码 Python
python将照片集变成视频
`shigen`是一位坚持更新文章的博客作者,记录成长历程,分享认知见解,留住生活感动。他利用Python库`Pillow`和`MoviePy`开发了一个工具,能够批量处理照片并生成高质量视频。该工具支持多种分辨率、自定义播放时间和照片方向,并能自动调整照片比例以实现居中对齐。通过简单的代码实现了照片视频化的需求,适合强迫症患者使用。**与shigen一起,每天不一样!**个人IP:shigen。
43 9
python将照片集变成视频
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
134 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
29天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
Python
Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv
本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。
16 1
|
1月前
|
编解码 UED Python
Python批量修改指定目录下图片的大小名文章
Python批量修改指定目录下图片的大小名文章
16 1
|
1月前
|
Python
Python实现图片的拼接
Python实现图片的拼接
|
人工智能 Python
Python工具:将文件夹下的视频按照帧数输出图片文件(含代码)
Python工具:将文件夹下的视频按照帧数输出图片文件(含代码)
153 0
|
机器学习/深度学习 数据处理 算法框架/工具