前言
大家早好、午好、晚好吖 ❤ ~欢迎光临本文章
环境使用
所需软件:
-
Python 3.8 解释器
-
Pycharm 编辑器
模块使用:
内置模块
-
import re >>> python独有的匹配字符串的模块,该模块种提供功能基于正则表达式实现的,
对于字符串进行模糊匹配找到想要的内容信息,一般用于爬虫或者自动化测试前后端不分离项目
-
import os >>> 包含普遍的操作系统功能
第三方模块
-
import requests >>> 网络请求库,提供多种网络请求方法并可定义复杂的发送信息
-
import ctypes >>> 提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数
如果安装python第三方模块:
-
win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
-
在pycharm中点击Terminal(终端) 输入安装命令
代码展示
一、采集壁纸
这里就采集一些壁纸做图片备用,嘿嘿
# 导入数据请求模块
import requests
# 导入正则表达式模块
import re
“”"
1. 发送请求
“”"
for page in range(3, 21):
print(f'正在采集第{page}页的数据内容')
请求链接
link = f'http://****/index_{page}.htm'
发送请求
html_data = requests.get(link).text
提取ID
img_id_list = re.findall('<a href="/desk/(\d+)\.htm" title=', html_data)
for循环遍历
for img_id in img_id_list:
请求链接
url = f'http://*****/desk/{img_id}.htm'
发送请求
response = requests.get(url)
“”"
<Response [200]> 响应对象, 表示请求成功
2. 获取数据, 获取网页源代码 <服务器返回响应数据>
response.text 获取响应文本数据
response.encoding = response.apparent_encoding 自动识别码
3. 解析数据, 提取我们想要的数据内容 壁纸链接以及名字
正则表达式简单使用:
re.findall(什么数据, 什么地方) --> 找到所有我们想要的数据内容
“”"
获得到数据, 返回出现乱码了
response.encoding = 'gbk'
链接地址 以及 标题
img, title = re.findall('<img src="(.*?)" alt="(.*?)"', response.text)[0]
print(img, title)
“”"
4. 保存数据, 把壁纸文件保存到本地文件
图片/视频/音频/特定格式文件… 发送请求, 获取二进制数据内容
解包 --> img, title = (‘链接’, ‘标题’)
“”"
发送请求, 获取数据
img_content = requests.get(img).content
with open('img\\' + title + '.jpg', mode='wb') as f:
f.write(img_content)
我这里到第15页就暂停了,你们可以自行去等待它下载
可以看到是真的很高清
二、自动切换壁纸
# 导入文件操作模块
import os
import ctypes
# 时间模块
import time
# 随机模块
import random
# 写一个界面, 让用户自动选择文件夹, 自动设置更换时间
源码、教程、资料+V:pytho8987
# 读文目录里面文件名
path = 'D:\\自游\\彼岸壁纸\\img\\'
files = os.listdir(path)
# for循环遍历 按照顺序更换了 随机
img_file_list = [path + file for file in files]
# 当什么成立的时候 True 布尔类型
while True: # 死循环
# time.sleep()
img_file = random.choice(img_file_list)
print(img_file)
ctypes.windll.user32.SystemParametersInfoW(20, 0, img_file, 3)
# for file in files:
# # 延时
# time.sleep(3)
# img_file = path + file
# print(img_file)
# ctypes.windll.user32.SystemParametersInfoW(20, 0, img_file, 3)
三、制作520图集
import os
import random
import pygame # pip install pygame
from PIL import Image # pip install pillow
text = '520快乐' # 字体形状, 可以修改成名字
size = 30 # 字体大小
初始化
pygame.init()
定义字体,参数依次是字体、字体大小
font = pygame.font.Font('msyh.ttc', size)
print(font)
渲染字体,参数依次是被渲染的文字、是否无锯齿、字体颜色、背景颜色
(0, 0, 0) 黑色 (255, 255, 255) 白色
font_text = font.render(text, True, (0, 0, 0), (255, 255, 255))
print(font_text)
获取渲染后的字体的高度和宽度
height = font_text.get_height() # 高度
width = font_text.get_width() # 宽度
print(font_text.get_at((1, 1))[0])
最后所有像素点会成为一个二维列表(形如[[1,2,3],[4,5,6]]),image_row_list是最外层的、总的列表
image_row_list = []
for x in range(height):
# image_col_list 是 image_row_list 中的每一个列表元素
image_col_list = []
for y in range(width):
# get_at((x,y))是返回像素点的像素值,[0]为第一个值R,
# 由于渲染后的图只有黑色和白色,所以只要[0]!=255,就是黑色
if font_text.get_at((y, x))[0] != 255: # 如果像素点不是 白色
image_col_list.append(1)
else:
image_col_list.append(0)
image_row_list.append(image_col_list)
""""""""""""""""""""""""""""""""""""""""""
源码、教程、资料+V:pytho8987
for row in image_row_list:
print(row)
""""""""""""""""""""""""""""""""""""""""""
""""""""""""""""""""""""""""""""""""""""""
# for row in image_row_list:
# for col in row:
# if col == 1:
# print('1', end='')
# else:
# print(' ', end='')
# print()
""""""""""""""""""""""""""""""""""""""""""
获取 image_row_list 列表的宽度和高度
width = len(image_row_list[0])
height = len(image_row_list)
设置最终输出的图片new_image,颜色模式RGB,宽和高分别放大100和100倍,背景色为白色。
new_image = Image.new('RGB', (100 * width, 100 * height), (255, 255, 255))
设置每一个(原图集)小图的裁剪尺寸
size = 100
遍历所有的像素点,如果像素点为1,也就是有颜色,则随机选择一张图片,将像素点填充为这张图片
for row in range(height):
for col in range(width):
if image_row_list[row][col] == 1:
# 从本地读取文件
source_image = Image.open('data\\' + random.choice(os.listdir(r'data')))
# 重新修改文件大小
source_image = source_image.resize((size, size), Image.ANTIALIAS) # 是否使用抗锯齿(antialias)功能
# 将图片复制到 new_image
new_image.paste(source_image, (col * size, row * size))
print('正在生成照片墙...')
new_image.save(text + '.jpg')
print('生成完毕, 请在当前文件项目下找照片墙文件')
import os
import ctypes
import cv2
def Change():
# 壁纸文件夹路径
源码、教程、资料+V:pytho8987
wallpaper_dir = r"D:\自游\彼岸壁纸\output"
# 获取壁纸文件夹中的文件列表
wallpapers = os.listdir(wallpaper_dir)
# 随机选择一张壁纸
# wallpaper_filename = random.choice(wallpapers)
for wallpaper in wallpapers:
# 拼接壁纸文件的完整路径
wallpaper_path = os.path.join(wallpaper_dir, wallpaper)
# 设置壁纸
ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_path, 3)
def convert_mp4_to_jpgs(path):
video_capture = cv2.VideoCapture(path)
still_reading, image = video_capture.read()
frame_count = 5 # 保存的起始帧的编号005
while still_reading:
cv2.imwrite(f"output/frame_{frame_count:03d}.jpg", image)
# read next image
still_reading, image = video_capture.read()
frame_count += 5 # 保存帧依次增加5,005>>010>>015.......
Change()
尾语 💝
好了,今天的分享就差不多到这里了!
完整代码、更多资源、疑惑解答直接点击下方名片自取即可。
对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!