【python】给你女神制作一个520图片墙吧~

news2024/11/11 5:22:02

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

环境使用

所需软件:

  • Python 3.8 解释器

  • Pycharm 编辑器

模块使用:

内置模块

  • import re >>> python独有的匹配字符串的模块,该模块种提供功能基于正则表达式实现的,

    对于字符串进行模糊匹配找到想要的内容信息,一般用于爬虫或者自动化测试前后端不分离项目

  • import os >>> 包含普遍的操作系统功能

第三方模块

  • import requests >>> 网络请求库,提供多种网络请求方法并可定义复杂的发送信息

  • import ctypes >>> 提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数

如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在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  # 保存帧依次增加5005>>010>>015.......

Change()

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/547803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

六级备考28天|CET-6|听力第一讲|基本做题步骤与方法|13:30~14:30

目录 1. 重点词汇 proofread / ˈpruːfriːd / v.校对&#xff0c;校阅 autonomous adj.独立的 obsession n. 喜好 ample …

网络安全的学习路线

在众多高大上的学习路线指导中&#xff0c;尝试做一股清流&#xff0c;把要讲清楚的都讲清楚&#xff0c;该学些什么&#xff0c;学到哪个程度进入到下一阶段的学习这些才是最重要的。 在学习之前首先要做好学习的系统规划&#xff1a; 1.目前市场需求主流的岗位里&#xff0…

vue3+ts+wangEditor5菜单栏添加自定义图标按钮,自定义弹出界面内容,自定义插入链接 五步走

Wangeditor安装&#xff1a;VUE3的安装 &#xff0c;其它看官网&#xff1a; npm install wangeditor/editor --save npm install wangeditor/editor-for-vuenext --save 官网&#xff1a;优势 | wangEditor 官方插入自定义内容样例&#xff1a; https://github.com/wange…

XDP入门体验之hello world

本文目录 1、下面这二张图&#xff0c;能非常好的说明XDP在Linux内核里的网络数据处理架构上的位置。2、XDP提供了可编程的灵活处理方式&#xff0c;XDP 程序可以通过 XDP action code来指定驱动程序对报文的后续处理方式&#xff1a;3、一个将收到的报文在XDP里直接丢弃的例子…

一款IP合并和分解工具

一&#xff1a;需求说明 近期在工作中有个需求&#xff0c;需要将七千多个ip地址&#xff08;有的带掩码&#xff0c;有的不带掩码&#xff09;进行合并尝试&#xff0c;看能不能通过合并减少ip的条目数。这就涉及到ip和掩码的计算&#xff0c;举例如下: 192.168.1.0/25 192.16…

第四章 matlab的循环结构

循环(loop)是一种 matlab 结构,它允许我们多次执行一系列的语句。循环结构有两种 基本形式:while 循环和 for 循环。两者之间的最大不同在于代码的重复是如何控制的。在 while 循环中,代码的重复的次数是不能确定的,只要满足用户定义的条件,重复就进行下 去。相对地,在 fo…

前端uniapp+后端springboot 详细教程《实现微信小程序授权登录》(附完整前后端项目demo)

实现微信小程序授权登录 1、前端技术栈1.1、uniapp1.2、前端封装工具1.3、Hbuilderx构建uniapp项目 2、后端技术栈2.1、创建springboot后端项目2.2、数据库准备2.3、创建实体类2.4、后端工具类2.5、mapper和service接口2.5、Service实现类2.6、微信用户的控制层Controller 微信…

怎么将png转jpg在线处理?图片转换格式工具分享

做设计的小伙伴经常需要进行图片格式转换&#xff0c;但是下载安装软件比较耗费时间&#xff0c;操作起来也很不方便&#xff0c;今天就来介绍一个在线格式转换的方法&#xff0c;下面以png转jpg在线&#xff08;https://www.yasuotu.com/geshi&#xff09;处理为例子给大家演示…

基本的排序算法

一、插入排序 基本思想&#xff1a;在待排序的元素中&#xff0c;假设前面n-1(其中n>2)个数已经是排好顺序的&#xff0c;现将第n个数插到前面已经排好的序列中&#xff0c;然后找到合适自己的位置&#xff0c;使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素…

JVM内存模型概述

当谈到Java虚拟机&#xff08;JVM&#xff09;的内存模型时&#xff0c;我们需要了解JVM如何管理内存并执行Java应用程序。理解JVM的内存模型对于编写高效、可靠的Java代码至关重要。本文将介绍JVM的内存模型&#xff0c;并通过图示进行说明。 JVM内存模型概述 JVM内存模型定义…

5年自动化测试经验的一些感悟—愿测试进阶路上的你不在迷茫

作为一个测试人&#xff0c;我们或多或少都听过或用过自动化&#xff0c;我们都曾在初入测试行业时&#xff0c;满怀期待的以为测试的尽头是不用测试员点点了&#xff0c;项目一提测&#xff0c;小手点下自动化的开关&#xff0c;瞬间测试的工作就完成了。 这就是我一开始从开…

Python-增加b站视频播放量

前言 本文是该专栏的第1篇&#xff0c;后面会持续更新对应平台干货知识&#xff0c;记得关注。 需求背景和说明&#xff1a;实现获取真实播放量&#xff0c;以及增加播放量 废话不多说&#xff0c;跟着笔者直接往下看正文&#xff0c;在文中将结合代码进行详细说明。&#xf…

【数据结构】从数据结构角度深入探究队列

队列是计算机科学中的一种基本数据结构&#xff0c;用于存储和管理数据。在计算机程序中&#xff0c;队列被广泛应用于任务调度、进程管理等场景。本文将介绍队列的概念、特点、常见操作以及应用。 文章目录 队列的概念队列的应用队列的存储结构队列接口的实现队列的初始化队尾…

plt.plot(x,y,color,linestyle,marker)函数参数详解

一、plt.plot()函数详解 plt.plot()函数是matplotlib库中用于绘制线条图的函数&#xff0c;它有多个参数可以控制绘图的各个方面。以下是常用的一些参数及其作用&#xff1a; x: x轴数据的列表或数组y: y轴数据的列表或数组linewidth: 线条的宽度&#xff0c;从0到无穷大的浮…

( 动态规划) 115. 不同的子序列 ——【Leetcode每日一题】

❓115. 不同的子序列 难度&#xff1a;困难 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数。 题目数据保证答案符合 32 位带符号整数范围。 示例 1&#xff1a; 输入&#xff1a;s “rabbbit”, t “rabbit” 输出&#xff1a;3 解释&…

智能变电站远程监控解决方案

智能变电站远程监控解决方案 一、项目背景 变电站是改变电压、控制和分配电能的场所&#xff0c;为了加强对变电站的监管力度&#xff0c;抓好供电作业的动态管理&#xff0c;及时、实时的掌握变电站的安全隐患的整改消除情况&#xff0c;确保安全生产贯穿于供电的全过程&…

如何禁用烦人的“insert”键

在我们日常的电脑使用中&#xff0c;有些按键可能会让我们感到非常烦恼&#xff0c;其中最常见的就是“insert”键。这个键位于键盘的右上角&#xff0c;通常会在我们不经意间被按下&#xff0c;导致我们的输入出现了一些奇怪的问题。如果你也曾经遇到过这个问题&#xff0c;那…

在网络安全领域中,主要有哪些技术方向?

入门Web安全、安卓安全、二进制安全、工控安全还是智能硬件安全等等&#xff0c;每个不同的领域要掌握的技能也不同。 当然入门Web安全相对难度较低&#xff0c;也是很多人的首选。主要还是看自己的兴趣方向吧。 本文就以下几个问题来说明网络安全大致学习过程&#x1f447; 网…

Vue3项目初始配置(更新中ing)

文章目录 别名路径联想配置方法 element plus按需引入并使用风格定制 eslint文件名不强制检测编辑.eslintrc.cjs 别名路径联想 在编写代码的过程中&#xff0c;一旦 输入 / , VSCode会立刻 联想出src下的所有子目录和文件, 统一文件路径访问不容易出 配置方法 在项目的根目…

相亲交友App开发解决方案及功能框架

相亲APP开发功能 1、注册登录&#xff1a;相亲APP开发平台是一款真实的交友软件&#xff0c;所以需要用户提交身份信息进行注册认证&#xff0c;也是为了保障用户的安全! 2、搜索功能&#xff1a;在线、新注册、距离近、同城老乡、星族速配等&#xff0c;都可以在相亲APP内进行…