别人都在庆祝建军节我却忘记了,为了弥补我用Python教大家打军体拳吧!

Python绘制漫画人物 from turtle import * 无轨迹跳跃 def my_goto(x, y): penup() goto(x, y) pendown() 眼睛 def eyes(): fillcolor("#ffffff") begin_fill() tracer(False) a = 2.5 for i in range(120): if 0 <= i < 30 or 60 <= i < 90: a -= 0.05 lt(3) f 阅读详情
建军节?

懵逼树上懵逼果,懵逼树下你和我…中午吃饭时候,看到朋友圈大家开始发建军节的内容,才猛地想起来,今天八月一啊!感觉一天活的浑浑噩噩的,都记不清日子了。由于最近在看**《大王饶命》**,搞得脑回路都有点奇特,突然就想起初中同学的一件趣事。他妈妈当时预产期是8月1号,由于提前检查了性别,知道是个男孩子,家里又是革命老兵出身,所以全家人都提前给他起好名字了叫张建军,结果7月31号的夜里生了他,全家人免不了一场尴尬…第一次听到同学说这个趣事就觉得好冷,然后一记就是十几年。更有趣的是,这个同学最后还真的上了炮兵学院,成了一名军人,哈哈。用大王饶命里面的一句对白,形容他家人当时迎接新生命的心情:“小朋友你好,很高兴见到你”。 “不,你高兴的太早了” !

怎么补偿这节日

老张今天在朋友圈显摆自己当年参军时候的照片,得瑟的不行。看娃当年也是安分守己的好青年,现在留个大背头,看着就不像好人。想问他军校学的东西,现在还记得么,比如军体拳?想想今天不知道该写点什么,不如我们就来做一套军体拳动画,大家觉得如何!

网上搜到

找了半天,找到一个插图比较齐全的军体拳动作分解。一共有50多张图的分解动作,还起来还不错。
军体拳图解
http://www.360doc.com这个网站大家都知道,和百度文库一个鸟样子,复制个文本,还得登录后才能复制,有没有一点奉献精神…文字都没得复制,更别说图片了。
360doc.com
那怎么办?软的不行来硬的,盘他呗!不就是几张图么,爬下来就完了啊…说到这里,顺嘴提一句,昨天爬抖音网页版,结果因为一些音乐的保存名称问题,反复下载了好几次,结果今天有些朋友想照着做一遍的时候,发现网站崩溃了,感觉有些罪过啊!
你还别说这个网站还挺鸡贼的,刚开始下载图片,居然一直提示403 Forbidden!
图片下载失败
看了下是免登录的网站啊,没有cookie啥的为啥会提示403 Forbidden呢,卡了半天发现必须要在headers中添加Referer才可以。网页分析和昨天爬抖音的链接没有太大区别在这里就不细讲了…最终下载56张军体拳分解动作图片:
图片下载完成

动图合成

图片下载下来了,光这么看有啥意思啊,要让这兄弟操练起来才对啊!那么我们该如何让这些图片动起来呢?其实很简单,使用**from PIL import Image**即可!但要注意一点,大家可以看到,13 14等几张图明显很窄,这样直接去合成的图片,根本没法看,所以在合成的同时,统一调整图片尺寸,代码如下:

def composite_gif(self):
    _images = []
    # 创建初始图片
    base_im = Image.open(images_list[0])
    # 获取图片尺寸
    _picture_size = base_im.size
    for file in images_list[1:]:
        im = Image.open(file)
        if im.size != _picture_size:
            # 调整尺寸
            im = im.resize(_picture_size)
        _images.append(im)
    gif = os.path.join(path, "juntiquan.gif")
    base_im.save(gif, save_all=True, loop=True, append_images=_images, duration=300)

简单说明下,我们先将第一张图片作为基础图例,并获取他的图片尺寸,之后所有的图片按照这个尺寸进行调整大小,把这些二进制的图片数据存储在一个list,当最后保存图片时,选择save_all = True, loop=True, append_images=_images几个参数,将图片全部保存,duration是图片间隔时长,单位是毫秒哦!

最终代码
# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/8/1 23:53
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : JunTiQuan.py

import os
import requests
from bs4 import BeautifulSoup
from PIL import Image


class JunTiQuan:
    def __init__(self):
        self.headers = {
            "Referer": url,
            'Connection': 'keep-alive',
            'user-agent': ('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 '
                           '(KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36')
        }
        self.path = self.image_path()
        self.images_list = list()

    @staticmethod
    def image_path():
        """
        获取代码执行目录,并在目录下创建Music文件夹
        :return 图片下载文件夹
        """
        base_dir = os.path.dirname(os.path.abspath(__file__))
        _path = os.path.join(base_dir, "Images")
        if not os.path.exists(_path):
            os.mkdir(_path)
        return _path

    def get_request(self, url):
        """
        封装requests.get方法
        如果为网页请求,返回网页内容
        否则,解析图片地址,并返回图片二进制内容
        :param url: 请求url(分网页、图片两类)
        :return: 网页内容 & 图片二进制文件
        """
        r = requests.get(url, headers=self.headers, timeout=5)
        if url.endswith('html'):
            return r.text
        else:
            return r.content

    def download_images(self, html):
        """
        解析军体拳图片
        :param html: 网页内容
        """
        soup = BeautifulSoup(html, 'lxml')
        # 根据关键字onclick查找每个下载地址
        for num, img in enumerate(soup.findAll('img', attrs={'fcksavedurl': True}), start=1):
            img_bytes = self.get_request(img['src'])
            image_name = '{}.png'.format(num)
            _full_name = os.path.join(self.path, image_name)
            self.images_list.append(_full_name)
            with open(_full_name, 'wb') as f:
                f.write(img_bytes)
            print("已下载 {}".format(image_name))

    def composite_gif(self):
        _images = []
        # 创建初始图片
        base_im = Image.open(self.images_list[0])
        # 获取图片尺寸
        _picture_size = base_im.size
        for file in self.images_list[1:]:
            im = Image.open(file)
            if im.size != _picture_size:
                # 调整尺寸
                im = im.resize(_picture_size)
            _images.append(im)
        gif = os.path.join(self.path, "juntiquan.gif")
        base_im.save(gif, save_all=True, loop=True, append_images=_images, duration=300)

    def run(self):
        html = self.get_request(url)
        self.download_images(html)
        self.composite_gif()


if __name__ == '__main__':
    url = 'http://www.360doc.com/content/16/0601/13/33121396_564170382.shtml'
    main = JunTiQuan()
    main.run()
动图效果

来一起看看最终生成的动图效果吧:
军体拳.gif
小伙子打得不错啊,明天我是不是要@一下老张,让他给我们录个军体拳的视频,看看是不是真材实料,哈哈。

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
期待你关注我的公众号**清风Python**,如果觉得不错,希望能动动手指转发给你身边的朋友们。
希望每周一至五清晨的7点10分,都能让清风Python的知识文章叫醒大家!谢谢……

用Python画红旗 Python画五星红旗 第一步:导包 用Python自带的turtle包,直接导入 import turtle 画布设置 turtle.setup(width=0.9, height=0.9) turtle.bgcolor(“red”) # 画布背景颜色 turtle.fillcolor(“yellow”) # 绘制图形的填充颜色 turtle.color(‘yel... 阅读详情

相关推荐

西门子PLC新手必看:200SMART与1200/1500的MODBUS RTU通讯实战(附完整配置流程)

本文详细解析了西门子PLC中S7-200 SMART与S7-1200/1500之间实现MODBUS RTU通讯的完整实战流程。内容涵盖硬件接线、软件配置及程序编写,重点讲解了200SMART作为从站、1200/1500作为主站的典型架构,并提供了关键功能块的使用方法和常见问题排查技巧,帮助新手快速打通不同系列PLC间的数据交换。

weixin_29214559的博客 397

Python学习:面向对象基础练习——士兵突击(代码演示) 及 身份运算符

面向对象封装案例II——士兵突击 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 一个对象的 属性 可以是 另外一个类创建的对象 01. 士兵突击 需求 士兵 许三多 有一把 AK47 士兵 可...

景墨轩 4380

软件测试方法——等价类划分法详解

!如果下面这些资料用得到的话可以直接拿走:1、自学开发或者测试必备的完整项目源码与环境2、测试工作中所有模板(测试计划、测试用例、测试报告等)3、软件测试经典面试题4、Python/Java自动化测试实战.pdf5、Jmeter/postman接口测试全套视频获取6、Python学习路线图。

MXB1220的博客 1万+

python009(绘制图像02—绘制英雄和透明图像)

代码演练II——绘制英雄图像 需求 加载me1.png创建英雄飞机 将英雄飞机绘制在屏幕的(200,200)位置 调用屏幕更新显示飞机图像

weixin_42681308的博客 322

STM32L433使用DSP库配置过程

STM32L433中有FPU,在使用中为了使用其中的部分函数,需要对其进行配置。     配置成功后做些总结,留待后续复习备忘,同时也希望有朋友像我一样使用DSP库配置时少走弯路,留作交流。

在在在的博客 4550

Xilinx Aurora 8B/10B IP核详解和仿真

Xilinx Aurora 8b/10b IP核的详解,以及使用与仿真示例,对IP核的配置和如何仿真有非常详细的说明,除了对IP核官方文档的内容进行了解析以外,还对GTX引脚的选择等比较容易混淆和不好理解的地方进行了说明。最后对IP核的仿真运行进行了STEP BY STEP 的说明,对仿真的结果也进行了简要的说明。 该文档对Xilinx FPGA和ZYNQ SOC下 AURORA 8B/10B IP核的使用提供了一个快速上手的指导。

weixin_43354598的博客 1万+

python士兵突击_Python面向对象实现案例——士兵突击

[code]#一个对象的属性可以时另外一个类创建的对象class Gun:def __init__(self,model):#1.枪的型号self.model=model#2.子弹的数量self.bullet_count=0def add_bullet(self,count):self.bullet_count += countdef shoot(self):#1.判断有无子弹if self.bu...

weixin_29820757的博客 780

基于74LS175的四人抢答电路设计(含详细设计分析及试错过程)

根据设计要求不难发现,只要有一人抢答,就会输出信号使指示灯常亮,此时其他人输入无效,适宜选择触发器,有人抢答时触发器输出由0变1,输出信号控制指示灯常亮,同时使CLR引脚输入0,触发器不工作,即其他选手不能再抢答。尝试加入一人抢答后其他人不可抢答功能,如下图,175四个~Q输出端接入同一个与非门,于是当有选手抢答时该与非门输出由0变1,将该信号输入U5A,U5A输出由1变0,接入~CLR即可使电路不再工作。但仿真时发现,该复位键仅可使抢答电路部分复位,计数部分只是暂停,并未复位。否则元器件将无法正常工作。

2202_75463653的博客 8192

Python:士兵与枪(类的使用)

# 士兵突击 # 士兵许有一把 AK47 # 士兵可以开火 # 枪能够发射 子弹 # 枪装填装填子弹 —— 增加子弹数量 class Soldier: """士兵""" def __init__(self, name): self.name = name self.gun = None def __str__(self): return "士兵%s,枪%s" % (self.name, self.gun) def fir

米老鼠kkk的博客 1761

绿标短网址app.10086.cn/xxxxx移动短网址缩短接口网址api调用php方式解析

绿标短网址app.10086.cn/xxxxx 移动网缩短接口网址api调用php方式解析 app.10086.cn是移动网站的接口,可以制作移动网等第三方官方网站域名的任意生成接口,由于是认证企业,可以再抖音 微信 qq等第三方渠道正常打开不拦截提示,第三方网址,头条文章等,效果非常号,这里记录下api接口,纯技术php生成,具体规则可以去抖音的开放平台去申请对应接口 。这里用我php模拟抓包获取方式 GET http://www.app10086cn.cn/?i=app.10068.cnHTTP/1.1

qq_20300095的博客 5908

SAP生产订单技术性完成(TECO)操作指南与实战应用

生产订单技术关闭操作指南主要包括单笔和批量关闭两种方式,通过CO02/COHV事务码完成。

m0_47402127的博客 1932

用 Python 画一只福鼠!

今年这个鼠年,尽管只是刚过了一个开头,但现实仿佛把我们很多年才需要经历的不好的事情,都在一瞬间抛向了我们,这个鼠年好像缺了点福气,本节我们使用 Python 画一只福鼠,为大家增添点福气...

纯洁的微笑 6531

092、Python在芯片验证中的应用:从脚本小子到验证架构师

Python在芯片验证中的高效应用 本文通过实际案例展示了Python在芯片验证中的关键作用。凌晨三点的调试场景揭示了传统方法的局限,Python脚本能在20分钟内分析80GB波形数据定位FIFO指针问题。文章重点介绍了两个核心工具: 智能日志分析系统:通过正则表达式和上下文分析,自动分类百万行验证日志中的错误,生成可视化报告,效率远超传统grep方法。 寄存器模型生成器:将Excel表格自动转换为UVM寄存器模型代码,将原本需要两周的手工工作缩短至两小时,同时保证零错误。 文章还展示了Python与Sys

z534437748的博客 72

python代码画人物_使用python画社交网络图实例代码

在图书馆的检索系统中,关于图书的信息里面有一个是图书相关借阅关系图。跟这个社交网络图是一样的,反映了不同对象间的关联性。利用python画社交网络图使用的库是 networkx,更多关于networkx的介绍与使用大家可以参考这篇文章:https://www.jb51.net/article/159743.htm下面开始本文的正文:import networkx as nximport matpl...

weixin_35431719的博客 2260

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

小用lambda函数

当函数只有一句代码,并且含有一个返回值时可以利用lambda函数 print((lambda a, b = 1: a + b)(1, 2)) 此时输出为3 a和b相当于python函数里的参数

weixin_48445640的博客 686

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python士兵与枪两种类连接使用

class Soldier: def __init__(self,name): self.name=name self.gun=None   #####这里先设为None  等枪示例化后再给 def __str__(self): return '士兵%s有一把%s,%s。'%(self.name,self.gun.model,sel...

m493096871的博客 1424

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python 装逼指南(一)

咳咳~~ python是个有趣的东西,那我就来分享一下使用过程中遇到的有趣的事情吧~~ 记得有一次在跟客户的交流中,正看着PPT,然后需要计算一些东西,本人用的操作系统是linuxmint,于是乎我打开黑漆漆的终端,敲入python 然后3231+900+1450*3..... 客户立马惊奇的问,这是什么玩意儿?这么强! 我呵呵~~

美味小鱼的杂货铺 6792

python026(封装案例03—创建士兵类—完成初始化方法)

开发士兵类 假设:每一个新兵都没有枪 定义没有初始值的属性 在定义属性时,如果不知道设置什么初始值,可以设置为None None关键字表示什么都没有 表示一个空对象,没有方法和属性,是一个特殊的常量 可以将None赋值给任何一个变量 ...

weixin_42681308的博客 357

python祝福祖国代码_国庆节踩空间留言代码_国庆节祝福正在加载中

[fts=6][ffg,#OOOFFF,#FFFFFF]★.`[/ft][/ft][ftc=000000][/ft][B][ftc=#f49bc1]▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂[ftc=#ffffff]☆[ftc=#f49bc1]▂[ftc=#ffffff]☆[ftc=#f49bc1]▂[/ft][/M][ftc=#000000] [M] [ftc=#cc0099][ftc=#00a650]...

weixin_39751076的博客 2399

2016.8.1今天是建军节

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33971205的博客 168

python代码画人物_用Python+Gephi画《人民的名义》人物关系图

理一下画关系图的步骤:首先,要找到《人民的名义》的台词(或剧本),可以使用UTF8编码的txt文件。其次,要提取剧中的角色,这里我们使用jieba分词模块来提取文本中的角色名,得到图的“节点”然后,为再剧本中每一段中出现的若干个角色,两两之间建立一条“边”,根据两两角色一同出现频度,来决定边的“权值”最后,根据上面的信息,使用Gephi来图可以先定义三个变量# names : 保...

weixin_39757212的博客 3230

Python面向对象实现案例——士兵突击

#一个对象的属性可以时另外一个类创建的对象 class Gun: def __init__(self,model): #1.枪的型号 self.model=model #2.子弹的数量 self.bullet_count=0 def add_bullet(self,count): self.bul...

weixin_41566686的博客 2147

jpg怎么合成一份_喜迎国庆,欢度中秋—用Python送出一份礼物

一年一度的国庆节到啦!今年还比较特别,国庆节和中秋节时间重叠了,算不算喜上加喜呢?小长假第一天,小编祝大家节日快乐,玩得开心。科普:国庆日,各国都要举行不同形式的庆祝活动以加强本国人民的爱国意识,增强国家的凝聚力。各国之间也都要相互表示祝贺。每逢五年或十年的国庆日,有的还要扩大庆祝规模。今天小编为大家送上一份诚意满满的国庆节礼物,教大家用Python绘制国庆地图、中国龙国庆祝福墙,祝祖国...

weixin_36318306的博客 461

用python画的基本知识_Opencv-python画图基础知识

相关函数介绍1. Point该数据结构表示了由其图像坐标 和 指定的2D点。可定义为:Point pt;pt.x = 10;pt.y = 8;或者Point pt = Point(10, 8);2. Scalar表示了具有4个元素的数组。次类型在OpenCV中被大量用于传递像素值。本节中,我们将进一步用它来表示RGB颜色值(三个参数)。如果用不到第四个参数,则无需定义。我们来看个例子,如果给出以下...

weixin_39606575的博客 163
上一篇: Python爬虫帮你打包下载所有抖音好听的背景音乐,还不快来一起听歌
下一篇: Python开发GUI工具介绍,实战:将图片转化为素描画!
清风 python
博客等级 码龄9年 64粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值