技巧 | 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


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

相关文章
|
8天前
|
Python
Python使用ffmpeg下载m3u8拼接为视频
Python使用ffmpeg下载m3u8拼接为视频
24 1
|
13天前
|
存储 Python
python实现图片与视频转换:将视频保存为图片,将批量图片保存为视频
python实现图片与视频转换:将视频保存为图片,将批量图片保存为视频
|
8天前
|
计算机视觉 Python
【干货】Python玩转各种多媒体,视频、音频到图片
【干货】Python玩转各种多媒体,视频、音频到图片
12 1
|
13天前
|
编解码 Linux 计算机视觉
python 调用ffmpeg使用usb摄像头录制视频,输出h264格式,自动获取摄像头的最佳帧率和最大画面尺寸
使用 Python 调用 FFmpeg 进行 USB 摄像头视频录制,需先确保安装 FFmpeg 和 Python 的 `subprocess` 模块。代码示例展示了如何自动获取摄像头的最佳帧率和最大分辨率,然后录制视频。首先通过 FFmpeg 列出摄像头格式获取信息,解析出帧率和分辨率,选择最优值。之后调用 FFmpeg 命令录制视频,设置帧率、分辨率等参数。注意 `/dev/video0` 是 Linux 的摄像头设备路径,Windows 系统需相应调整。代码中未直接实现自动获取最佳参数,通常需要借助其他库如 OpenCV。
|
13天前
|
Python
图片相似度比较_python
图片相似度比较_python
11 1
|
21天前
|
Python
无缝融合:使用 Python 和 PyFFmpeg 合并视频的完整指南
使用Python和PyFFmpeg合并视频教程:安装pyffmpeg和subprocess模块,编写merge_videos函数,通过ffmpeg命令行工具进行视频拼接。运行脚本将多个.mp4文件合并为一个,并保存为merged_video.mp4。简单易用,提升内容创作效率。
30 2
|
7天前
|
数据采集 机器学习/深度学习 搜索推荐
Python第一章(图片与API接口)
Python第一章(图片与API接口)
|
12天前
|
机器学习/深度学习 算法 数据可视化
【深度学习实战】基于深度学习的图片风格快速迁移软件(Python源码+UI界面)
【深度学习实战】基于深度学习的图片风格快速迁移软件(Python源码+UI界面)
|
3天前
|
机器学习/深度学习 人工智能 前端开发
Python中的模块化编程
【6月更文挑战第17天】Python模块化编程与软件架构设计的关键在于拆分任务到独立模块,提高代码的可维护性、可重用性和可扩展性。例如,学生管理系统可分解为录入、查询和删除模块。MVC和MVVM架构模式有助于组织代码,而微服务和函数式编程将在未来发展中扮演重要角色。通过示例代码,读者能学习如何实现这些概念,提升项目开发效率和质量。
148 57
|
11天前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!