iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python功能笔记——杂七杂八
  • 658
分享到

python功能笔记——杂七杂八

功能笔记python 2023-01-31 01:01:35 658人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

×××复习阶段,无聊弄点东西玩一下,实现功能有(控制浏览器访问学校校历,截图保存下来,通过图片处理,最终将其设置为桌面):    1.控制浏览器访问网页;    2.将网页截图;    3.图片处理(图片合并、图片换色);    4.调用w

×××复习阶段,无聊弄点东西玩一下,实现功能有(控制浏览器访问学校校历,截图保存下来,通过图片处理,最终将其设置为桌面):

    1.控制浏览器访问网页;

    2.将网页截图;

    3.图片处理(图片合并、图片换色);

    4.调用win32Api,将图片设置为壁纸;

    5.py脚本转exe可执行程序;

    6.获取鼠标所在位置的xy值和RGB值。

 所编写内容均来自互联网,下面进行记录(完整的代码放到Http://188.131.140.135/softwareList/Mine/):


一、获取网页截图与环境配置(所有安装的包如图所示)

    下面不再赘述包的安装,如果报错,可以使用pip安装对应的包

TIM截图20180913144947.png

    可以到http://188.131.140.135/softwareList/ 下载不好找的包和ChromeDriver(用于控制谷歌浏览器的驱动)(对应的是Chrome最新的版本)

        ChromeDriver不需要安装,只要放到谷歌浏览器的安装目录下即可,默认是:C:\Program Files (x86)\Google\Chrome\Application下

            然后修改一下系统变量,如下图所示:

TIM截图20180913151052.png

TIM截图20180913151008.png

        接下来就可以通过selenium获取网页的截图了,参考代码如下(来自于互联网):

from selenium import WEBdriver
from PIL import Image
import os
#引入chromedriver.exe
option = webdriver.ChromeOptions()#引入参数
#option.add_argument('headless')#屏蔽浏览器显示,效果是不打开浏览器就实现功能,但是为了截图,还是要打开比较好
chromedriver = "chromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
browser = webdriver.Chrome(chromedriver,chrome_options=option)
#设置浏览器需要打开的url
url = "http://202.206.243.9/xiaoli.asp"  
browser.maximize_window()#将浏览器窗口最大化
browser.get(url)
browser.execute_script("""
  (function () {
    var y = 50;
    var step = 100;
    window.scroll(0, 0);
     function f() {
      if (y < document.body.scrollHeight) {
        y += step;
        window.scroll(0, y);
        setTimeout(f, 50);
      } else {
        window.scroll(0, 0);
        document.title += "scroll-done";
      }
    }
    setTimeout(f, 1000);
  })();
""")#执行截图脚本
for i in range(30):
  if "scroll-done" in browser.title:
    break
    time.sleep(1)
browser.save_screenshot("schoolCalenderSource.png")#将截图保存
browser.close()#关闭浏览器
browser.quit()#关闭Chrome Driver

    如果一切顺利的话,就可以在当前目录下得到一张名为schoolCalenderSource.png的截图了,如下图所示:

schoolCalenderSource.png

二、对获取到的截图进行处理

    上面获取到的这个图片并不能直接用来做桌面,所以需要进行裁剪,将中间显示日历的部分裁剪出来,使用到的包是上边已经导过的PIL(通过安装Pillow),代码如下:

im = Image.open("schoolCalenderSource.png")
# 图片的宽度和高度
img_size = im.size
x = 400
y = 260
w = 1100
h = 570
region = im.crop((x, y, x+w, y+h))  #在这里可以多试几次,以裁出一个最合适的大小
region.save("./schoolCalenderBeCut.png")

        裁取后将图片保存为schoolCalenderBeCut.png,如下图所示:

schoolCalenderBeCut.png

    在截取之后,可以直接将其设置为桌面背景,但是不太好看,所以可以通过win10自带的绘图软件自己绘制一个背景图片,将其命名为base.png,如下图所示(随便画):

base.png

    制作好了背景图之后,就可以将两张图片进行拼合,过程是将截图缩小,然后粘贴到背景图上,代码如下所示:

#加载底图
base_img = Image.open('base.png')
base_img = base_img.resize((1920,1600))
# 可以查看图片的size和mode,常见mode有RGB和RGBA,RGBA比RGB多了Alpha透明度
# print base_img.size, base_img.mode
box = (500, 600, 1600, 1170)  # 底图上需要P掉的区域,这些数字通过自己来多次尝试,才能试出一个合适的数字
#1100 570  
#加载需要P上去的图片
tmp_img = Image.open('schoolCalenderBeCut.png')
#这里可以选择一块区域或者整张图片
#region = tmp_img.crop((0,0,304,546)) #选择一块区域
#或者使用整张图片
region = tmp_img
#使用 paste(region, box) 方法将图片粘贴到另一种图片上去.
# 注意,region的大小必须和box的大小完全匹配。但是两张图片的mode可以不同,合并的时候回自动转化。如果需要保留透明度,则使用RGMA mode
#提前将图片进行缩放,以适应box区域大小
# region = region.rotate(180) #对图片进行旋转
region = region.resize((box[2] - box[0], box[3] - box[1]))
base_img.paste(region, box)
#base_img.show() # 查看合成的图片
base_img.save('./schoolCalenderBeCombine.png') #保存图片

    保存的图片schoolCalenderBeCombine.png如下图所示:

schoolCalenderBeCombine.png

    到了这一步,已经可以将其设置为桌面了,但是通过实际的尝试体验之后,发现白色背景的桌面是真的难看,而且还和桌面上的文件名的颜色有冲突,导致文件名看不清,所以下面将此图片修改一下颜色,例如可以修改为浅×××,代码如下:

img = Image.open("schoolCalenderBeCombine.png")#读取图片
width = img.size[0]#长度
height = img.size[1]#宽度
i = 1
j = 1
for i in range(0,width):#遍历所有长度的点
    for j in range(0,height):#遍历所有宽度的点
        data = (img.getpixel((i,j)))#打印该图片的所有点
        if (data[0]>=220 and data[1]>=220 and data[2]>=220):#RGBA的r值大于170,并且g值大于170,并且b值大于170
            img.putpixel((i,j),(230,228,205,20))#则这些像素点的颜色改色
        #############下面的几行代码是在×××的日期#12月22号#处画个方块##############
        x=1050
        y=715 #每个32
        color=(241,148,148,255)
        if (j>=x and j<=x+35):#真实+260[1050,1060]
            if(i>=y and i<= y+10):#[715,725]
                img.putpixel((i,j),color)
        if (j>=x and j<=x+10):#真实+260[1050,1060]
            if(i>=y and i<= y+30):#[715,725]
                img.putpixel((i,j),color)
        if (j>=x+25 and j<=x+35):#真实+260[1050,1060]
            if(i>=y and i<= y+30):#[715,725]
                img.putpixel((i,j),color)
        if (j>=x and j<=x+35):#真实+260[1050,1060]
            if(i>=y+30 and i<= y+40):#[715,725]
                img.putpixel((i,j),color)
        #############到这里结束##############
img = img.convert("RGB")#把图片强制转成RGB
img.save("schoolCalenderColorChange.png")#保存修改像素点后的图片

    保存后的效果如下图所示:

schoolCalenderColorChange.png


三、设为桌面壁纸

    当调出了一张比较满意的壁纸之后,就可以通过windowsapi来进行控制(需要安装的包是pywin32),通过下面的代码(只需要改调用函数时传入的图片地址即可)来进行桌面壁纸的设置(详细的API可以自行去搜):

def setWallpaper( bmp ):
    import win32api, win32con, win32gui
    k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
    win32api.RegSetValueEx(k, "WallpaperStyle", 0, win32con.REG_SZ, "0")
    win32api.RegSetValueEx(k, "TileWallpaper", 0, win32con.REG_SZ, "0")
    win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, bmp, 1+2)
setWallpaper(os.getcwd()+'\\schoolCalenderColorChange.png') #地址要写绝对地址,否则设置完之后,桌面会是一片灰色,同理,如果设置完之后,桌面是什么都没有的灰色,那就说明设置失败了,代码有问题

        设置完成之后的效果如下图所示:

TIM截图20180913160021.png

    当设置完壁纸之后,工作就结束了,接下来要进行的是后续的清理工作,首先要将生成的几张图片删除掉,代码如下:

os.remove('schoolCalenderSource.png')
os.remove('schoolCalenderBeCut.png')
os.remove('schoolCalenderBeCombine.png')
os.remove('schoolCalenderColorChange.png')

        当然,还可以修改代码,将所有图片存在内存中,不用非得保存在硬盘上,但是由于我为了看每一步的效果才这么做的,以后有时间再进行完善吧!


四、Python脚本转为EXE可执行文件

    这一步很简单,需要用到的包为PyInstaller,直接使用pip进行安装即可(pip install pyinstaller)

        这一步需要在python shell中完成,首先将已经编写好的Python脚本单独放到一个文件夹中(因为接下来的操作会生成很多的目录和文件,很可能就不知道那些是原来存在的,那些是生成的没用的),现在我的这个文件在桌面上,接下来打开CMD(WIN+R),先打个“cd ”然后将这个文件拖到CMD中,如下图所示:

TIM截图20180913161317.png

    这样就快速的切换到脚本保存目录中,通过“dir”命令就可以看到其中的Python脚本了,接下来通过命令来进行编译:

pyinstaller -F getSchoolCalenderAndSetBackground.py

        如图所示:

TIM截图20180913161727.png

        当控制台输出这条消息之后,就代表已经编译成功了

TIM截图20180913161835.png

    然后回到文件夹中,就可以看到编译后的文件了,不过会同时生成很多没用的东西,真正的好东西在“dist”目录下,将这个目录中的".exe"文件取出,就可以运行了(需要注意的是,要在此exe运行的目录下放上之前使用到的“base.png”这个背景图片)



--结束END--

本文标题: python功能笔记——杂七杂八

本文链接: https://www.lsjlt.com/news/183223.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python功能笔记——杂七杂八
    ×××复习阶段,无聊弄点东西玩一下,实现功能有(控制浏览器访问学校校历,截图保存下来,通过图片处理,最终将其设置为桌面):    1.控制浏览器访问网页;    2.将网页截图;    3.图片处理(图片合并、图片换色);    4.调用w...
    99+
    2023-01-31
    功能 笔记 python
  • Python面向对象:杂七杂八的知识点
    为什么有这篇"杂项"文章 实在是因为python中对象方面的内容太多、太乱、太杂,在写相关文章时比我所学过的几种语言都更让人"糟心",很多内容似独立内容、又似相关内容,放这也可、放那也可、放这也不好、放那也不好。 所以,用一篇单独的文章来...
    99+
    2023-01-30
    知识点 面向对象 Python
  • Python杂记
    Python 2.7先装easy installhttps://pypi.python.org/pypi/setuptools#downloads 可以下载,在win7 cmd下用python ez_setup.py安装也可以装个IPyth...
    99+
    2023-01-31
    杂记 Python
  • 笔记本电脑音箱杂音如何处理
    这篇“笔记本电脑音箱杂音如何处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“笔记本电脑音箱杂音如何处理”文章吧。原因一:卫...
    99+
    2023-06-28
  • Python学习笔记整理(八)Pytho
      程序由模块构成 模块包含语句 语句包含表达式 表达式建立并处理对象 一、Python语句 语句 角色 列子 赋值 创建引用 a,b,c='good','bad...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • Python第八周 学习笔记(1)
    基本概念个体继承自父母,继承了父母的一部分特征,但也可以有自己的个性 子类继承了父类,就直接拥有了父类的属性和方法,也可以定义自己的属性、方法,甚至对父类的属性、方法进行重写 Python继承实现 class Cat(Anima...
    99+
    2023-01-31
    学习笔记 Python
  • Python学习笔记整理(七)Pytho
    一、元组介绍 元组(tuple)是无法修改的其他对象的结合.元组由简单的对象构成,元组与列表类似,不过元组不能在原处修改。通常写成圆括号中的一系列项。 1、元组的属性 *任意对象的有序集合 与字符串和...
    99+
    2023-01-31
    学习笔记 Python Pytho
  • python功能笔记——远程监控
    python 监控远程主机(根据慕课网手打)1.获取要监控的计算机的信息os.system('command') 直接输出结果os.popen('command') 返回一个文件open('/proc/file') ...
    99+
    2023-01-31
    远程监控 功能 笔记
  • python功能笔记——图像处理
    python图像处理from PIL import Image"""打开图片"""pil_im=Image.open('test1.jpg').convert('L') #打开图片,后跟函数功能为转变成灰色#print(pil_im) ...
    99+
    2023-01-31
    图像处理 功能 笔记
  • [PYTHON] 核心编程笔记之八-Py
    8.1 if语句if expression:    expr_true_suite8.1.1 多重条件表达式单个if 语句可以通过使用and,or和not实现多重判断条件或是否定判断条件if not warn and (system_loa...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • [PYTHON] 核心编程笔记之七-Py
    7.1 映射类型:字典字典是Python语言中唯一的映射类型,映射类型对象里哈希值(键)和指向的对象(值)是一对多的关系,字典对象可变,它是一个容器类型,能存储任意个Python对象注:什么是哈希表哈希表是一种数据结构:哈希表中存储的每一条...
    99+
    2023-01-31
    核心 笔记 PYTHON
  • 笔记本电脑中怎么解决麦克风有杂音问题
    这篇文章主要介绍笔记本电脑中怎么解决麦克风有杂音问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!右键声音图标,选择录音设备。如图所示:随后出现声音的控制面板,右键 麦克风 选择属性。如图所示:然后切换到高级选项卡,...
    99+
    2023-06-28
  • 新型 Linux 病毒,脚本超 1000 行,功能复杂
    俄罗斯杀毒软件公司 Dr.Web 近日公开了一个被称为 Linux.BtcMine.174 的新型木马,相比传统恶意 Linux 病毒,它更加复杂,同时也包含了大量恶意功能。该木马是一个包含 1000 多行代码的 shell 脚本,它同时也...
    99+
    2023-06-06
  • Easypoi如何实现复杂excel文件导出功能
    本篇内容介绍了“Easypoi如何实现复杂excel文件导出功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!之所以用Easypoi我是看中...
    99+
    2023-06-21
  • ASP SiteMapPath 的高级技巧:掌握其复杂功能
    正则表达式可提供对 SiteMapPath 中输出内容的更精细控制。例如,要仅显示文档路径的最后一部分,可以使用如下表达式: <% Response.Write(Request.ServerVariables("SCRIPT_NAM...
    99+
    2024-04-02
  • Easypoi轻松实现复杂excel文件导出功能
    之前做的excel文件导出都相对简单,用的都是公司自己封装的一些poi方法,导出内容都是表头+一行行的数据,但是这次需要导出的excel复杂度高了不少,自己用现有方法做比较麻烦,因此...
    99+
    2024-04-02
  • Python学习笔记整理(十七)异常处理
    一、异常基础 try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行try语句后面的程序) ...
    99+
    2023-01-31
    学习笔记 异常 Python
  • Qt实现小功能之复杂抽屉效果详解
    目录功能讲解自定义标题widget标题名称控件的创建QCheckBox控件的创建自定义内容Widget创建显示高度描述控件QScrollArea中widget实现QScrollAre...
    99+
    2024-04-02
  • 基于JavaMail的Java实现复杂邮件发送功能
    上一篇文章 基于 JavaMail 的 Java 邮件发送:简单邮件发送 讲解了邮件的基本协议,JavaMail组件,创建并发送一封简单邮件的详细步骤。本文将介绍如何创建并发送一封包含图片和附件的复杂邮件。一封复杂的邮件内容可以看做是由很多...
    99+
    2023-05-31
    javamail java 邮件发送
  • React实现复杂搜索表单的展开收起功能
    给时间时间,让过去过去。 上节我们写过了【搜索】表单,以及查询、重置功能。本节对于需要展开收起效果的查询表单 进行概述,主要涉及前端样式知识。 样式效果如下: &nbs...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作