python实现

您所在的位置:网站首页 怎么把gif设成壁纸 python实现

python实现

2024-05-26 23:42| 来源: 网络整理| 查看: 265

目录 脚本介绍代码GIF演示参考 周四,天气多云,心情阴,晚上翻收藏夹的时候发现了《依巴拉度~时间篇》,一部根据井上直久的绘画作品编辑而成的动画。看着这些精美的画面,萌生出一个想法,我能不能把视频里面的画面截取出来,作为我的桌面壁纸呢?说干就干。

除了《依巴拉度~时间篇》,也推荐游戏《GRIS》,画面非常美,可以找视频录播下载下来做壁纸。

脚本介绍

如果只是自己用的话,代码会简单非常多,只需要提取图片和更换壁纸的两个函数就行,但是总想把它完善,就有了现在这个更友好的工具。

脚本的作用:从网上,或者本地获取到视频,然后每隔一段时间提取出一张图片,并随机选取一张作为桌面壁纸,每隔一段时间壁纸可以自动更换,当手动结束程序的时候,壁纸才会停止更换。

代码

注意事项:

请安装相关的库文件

脚本可以直接运行,无需做修改

脚本使用了you-get来下载网络视频,其支持的站点参见完整列表

支持同时下载多个视频

考虑到you-get下载速度,以及其他情况,脚本也支持本地视频

提取出来的图片会进行分类,方便管理使用

import sys import os import cv2 import random import ctypes import time from you_get import common as you_get # 导入you-get库 # video_path = r'C:\Users\asuka\Desktop\test' # 存储视频的文件夹 # video_url = 'https://www.bilibili.com/video/BV1ox411V7Gu' # 需要下载的视频地址 # cut_time = 10 # 修改为每隔10秒截取一张图片 # 下载视频 def download_video(): sys.argv = ['you-get', '-o', video_path, video_url] # sys传递参数执行下载,就像在命令行一样;‘-o’后面跟保存目录。 you_get.main() # 从视频中截图图片 def get_img(): video_type = [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng", ".qt", ".mpg", ".mpeg", ".3gp", ".mkv"] for current_folder, list_folders, files in os.walk(video_path): for f in files: # 用来遍历所有的文件,只取文件名,不取路径名 if os.path.splitext(f)[-1] in video_type: # 检查出视频文件 copy_f = current_folder + '\\' + f # 给出视频文件的绝对路径 print('检查到视频文件:' + f) print('开始提取图片') picture_path = os.path.join(video_path, os.path.splitext(f)[0]) os.makedirs(picture_path) os.chdir(picture_path) video_cap = cv2.VideoCapture(copy_f) # 读取视频文件 success, image = video_cap.read() fps = int(video_cap.get(cv2.CAP_PROP_FPS)) * cut_time count = 0 while success: if count % fps == 0: cv2.imwrite("./%d.jpg" % int(count / fps), image) # 指明存储图片的位置 # print('Process %dth seconds: ' % int(count / fps), success) success, image = video_cap.read() count += 1 print('提取完毕:' + f) # 设置桌面壁纸 def set_wallpaper(): all_picture_path = [] # 用来存储所有图片的绝对路径 for current_folder, list_folders, files in os.walk(video_path): for f in files: # 用来遍历所有的文件,只取文件名,不取路径名 if f.endswith('.jpg'): # 检查出所有的图片 picture_path = current_folder + '\\' + f # 给出图片的绝对路径 all_picture_path.append(picture_path) while True: filepath = random.choice(all_picture_path) # 随机选取某张图片,建立绝对地址 print(filepath) ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0) # 设置桌面壁纸 time.sleep(replace_wallpaper) # 睡眠半个小时 print('''脚本的功能: 1:从你指定的url地址中下载视频(可选功能) 2:指明存储视频的文件夹 3:脚本会从视频中每隔数秒提取出一张图片 4:脚本会每隔一定时间,随机选取一张图片作为桌面壁纸''') print() choice = input('我希望使用本地视频(请按 1),我希望使用网络视频(请按 2):') if choice == '2': print("请输入网址,每行输入一个。输入’quit‘结束输入") url_list = [] # 存储用户输入的内容 while True: char = input() char = char.strip() if char == '': continue if 'quit' in char: break url_list.append(char) video_path = input('请输入用来存储视频的文件夹地址:') cut_time = int(input('每隔几秒截取图片:')) replace_wallpaper = int(input('每隔几秒更换壁纸:')) for video_url in url_list: download_video() get_img() set_wallpaper() elif choice == '1': video_path = input('请输入用来存储视频的文件夹地址:') cut_time = int(input('每隔几秒截取图片:')) replace_wallpaper = int(input('每隔几秒更换壁纸:')) get_img() set_wallpaper() GIF演示

由于需要提取图片,所以GIF时间较长

使用网络视频 请添加图片描述 使用本地视频

请添加图片描述

参考

@一行玩python: 五行Python自动换你的电脑桌面壁纸(内附源码和exe) @zhimahuuu:视频切割:python将视频文件按秒存储成图片 @Mr.史:python you-get ffmpeg 下载哔哩哔哩视频



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3