范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Python完成英雄联盟原话千图成像,这也太酷了

  千图成像 :用N张图片拼凑成一张图片。
  实现原理 :先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块。
  图库中的图片处理 :标记图库中每张图片的混合颜色,用于替换目标色块,并记录每张图片的特征用于成像,增加成像质量。 0,起源
  德莱文
  图片局部
  英雄联盟-微博
  很久前在刷微博的时候看到了这条,被他给震撼到了,图片是由LOL近千张皮肤图片组合构成的(难道这是用ps做的,还是一张张拼的,应该不可能吧),就在昨天突然就想起了这个事,就决定也做一个,随即便展开了行动。搜到了这篇文章,看了下图片的构成,决定先取得所有皮肤的图片再说吧!便又开始了 爬虫 !
  运行环境:Python3.6.5 , pycharm-2018-1-2 , win10
  愣着干嘛,快往下看 1.爬虫思路皮肤图片的来源问题,首先到官网去找了找,想到了道聚城皮肤专卖区,其中正好有所有我们需要的图片。
  皮肤图片来源 通过F12锁定图片取得了第一张图片的URL,(https://game.gtimg.cn/images/daoju/app/lol/medium/2-122015-9.jpg)
  取得URL 以此类推便可取得多个皮肤的URL,发现只有图中红框处不同
  URLS 尝试这改变红框内的数字( 玄学 ),在改变后三位(122015-->122001)时,获得了另一张诺手的皮肤,基本可以确定后三位为 皮肤编号 ,前面的数字为 英雄编号 ,且皮肤编号必须为三位,这一步得感谢这位博主,让我更加确定了这个规律的可行性。(这一步花了好久) 看到这里你可能会有所疑问,为什么不直接正则获取所需图片的URL呢?为什么要大费周章的寻找规律?因为这个翻页式网站比较特殊,在翻页时URL并不会改变,所以无法通过常用方法获取所有皮肤,那估计又有人要提出使用 selenium 库来模拟人使用浏览器获取所有图片,但是这会造成爬取图片的速度大大下降,只能作为下策(在这过程中了解到了八爪鱼,发现其原理类似于selenium,是模拟人操控浏览器,速度也是不容直视,虽然它能爬取近98%的网站),在博主能力有限的情况下选择了寻找规律之旅!
  如果你有好的方法解决这个问题,可以在评论处提出,十分感谢!接下来在知道了规律的情况下,那么如何获取每个不同英雄的编号呢?在其他博主的引导下,发现LoL资料库中有所有英雄的头像,通过F12的慢慢查找,发现了这个js文件!
  Network
  查看其preview,便可得到所有英雄编号,并测试发现可用!比如Ashe艾希的第一个皮肤对应编号按规律应该是22001,所以URL就是https://game.gtimg.cn/images/daoju/app/lol/medium/2-22001-9.jpg,测试发现确实成功了!
  preview 好了,到此为止网页分析到此结束了,终于可以编写代码了! * 2,代码框架1,获取英雄编号及皮肤编号( 说明 :关于皮肤编号并未找到每个英雄皮肤的数量,所以设置成查找所有001到015的图片,当然也可以更多020也行) 2,将编号导入图片URL(https://game.gtimg.cn/images/daoju/app/lol/medium/2-******-9.jpg)中,生成Url_list。 3,根据URL来下载对应图片,并保存到本地。 * 3,完整代码import requests import re import os # # # # # # # # # # # # # # # title:获取LOL英雄皮肤图像  # # author:简书 Wayne_Dream  # # date:2018-7-5           # # 转载请注明出处!!!       # # # # # # # # # # # # # # #  def getHero_data():     try:         headers = {             "user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"         }         url = "http://lol.qq.com/biz/hero/champion.js"         r = requests.get(url, headers=headers)         r.raise_for_status()         r.encoding = r.apparent_encoding         text = r.text         hero_id = re.findall(r""id":"(.*?)","key"", text)         hero_num = re.findall(r""key":"(.*?)"", text)         return hero_id, hero_num     except:         return "卧槽,获取英雄编码失败!"  def getUrl(hero_num):     part1 = "https://game.gtimg.cn/images/daoju/app/lol/medium/2-"     part3 = "-9.jpg"     skin_num = []     Url_list = []     for i in range(1, 21):         i = str(i)         if len(i) == 1:             i = "00"+i         elif len(i) == 2:             i = "0"+i         else:             continue         skin_num.append(i)     for hn in hero_num:         for sn in skin_num:             part2 = hn + sn             url = part1 + part2 + part3             Url_list.append(url)     print("图片URL获取成功")     return Url_list  def PicName(hero_id, path):     pic_name_list = []     for id in hero_id:         for i in range(1, 21):             pic_name = path + id + str(i) + ".jpg"             pic_name_list.append(pic_name)     return pic_name_list  def DownloadPic(pic_name_list, Url_list):     count = 0     n = len(Url_list)     try:         for i in range(n):             headers = {                 "user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"             }             res = requests.get(Url_list[i], headers=headers).content             if len(res) < 100:                 count += 1                 print("r当前进度:{:.2f}%".format(100*(count/n)), end="")             else:                 with open(pic_name_list[i], "wb") as f:                     f.write(res)                     count += 1                     print("r当前进度:{:.2f}%".format(100*(count/n)), end="")     except:         return "卧槽,获取图片失败!"  if __name__ == "__main__":     print("author:简书 Wayne_Dream:")     print("https://www.jianshu.com/u/6dd4484b4741")     input("请输入任意字符开始爬虫:")     if os.path.exists("D:LOLimg_wayne") == False:         path = r"D:LOLimg_wayne"         os.mkdir(path)         hero_id, hero_num = getHero_data()         Url_list = getUrl(hero_num)         pic_name_list = PicName(hero_id, path)         print("正在下载图片,请稍等…")         print("在" + path + "下查看...")         DownloadPic(pic_name_list, Url_list)         print("图片下载完毕")     else:         path = r"D:LOLimg_wayne"         hero_id, hero_num = getHero_data()         Url_list = getUrl(hero_num)         pic_name_list = PicName(hero_id, path)         print("正在下载图片,请稍等…")         print("在" + path + "下查看...")         DownloadPic(pic_name_list, Url_list)         print("图片下载完毕")
  代码写的比较丑,如有看不懂的部分可在评论区提出,我会秒回你的! /认真脸
  好了,到这里我们已经完成了LOL全皮肤的获取,接下来进行最有意思的一步,千图成像!(文末有我爬取到的皮肤图集百度网盘地址) 4,初级阶段我们先使用一款国外的合成软件
  软件下载地址 如果打不开,那就搜索" foto-mosaik-edda "下载即可!
  Windows用户请选这个
  打开后界面是这样的。
  第一步创建图库
  先选第一步
  1.1
  1.2
  等待一会儿
  再选第二步create photo mosaic
  2.1
  2.2
  2.3
  2.4
  2.5,弹出警告点确认
  效果图
  局部
  有时间再分享如何用python实现这个软件的功能…………
  如发现错误或看不懂的地方,可在评论区提出,大家一起交流!
  如果文章对您有帮助,点赞+关注,您的支持是我最大的动力

雷克萨章节元素种族棋子英雄还有新乱斗!设计师头发还剩多少?炉石传说的图书馆的秘密活动还剩最后一周的英雄乱斗角斗场没结束,然而勤奋的设计师们又是推出了变装舞会的大版本更新预告,可谓是令人目不暇接。只想问一句,这样的更新频率,炉石的项目组应该一梦江湖双节狂欢,中秋豪礼等你来领,听说中秋节和奶茶更配哦一梦江湖手游(原网易楚留香手游)是一款以宋朝为背景的武侠风手游。作为一个武侠小迷弟,对一梦江湖这种类型的手游真是爱不释手,精美的画风和细致的贴图给我们呈现出了完美的宋朝景观。想当年各路coser齐争艳,玩家这样的方思明也太可了吧Cosplay作为ACG文化的重要分支,越来越受到年轻人的喜爱,不论男孩女孩都非常喜欢把自己喜欢的二次元人物带到现实中来。通过服饰妆容现场环境营造出与二次元一样的角色。随着Cosp零氪党也能在一梦江湖里造出这么美的房子,网友我爱了在江湖中搭建一所属于自己的绝美房子是许多武侠玩家们心中追求的梦想,不过,要能建完屋子的同时又让屋子好看却是很难的。在很多游戏中,玩家要想建造一个高档的房子,不可避免地要氪金去买房屋一梦江湖震惊!一梦江湖竟然是个音乐游戏?一梦江湖(原楚留香手游)作为一款超高自由度的MMO武侠手游,玩家在游戏中体验快意恩仇可以说是最基本的操作。游戏中,玩家可以是风景党,周游各地,领略游戏每个角落的风采还可以买一座住宅出什么事了?一梦江湖全员选择综合征二选一热潮江湖又有重大节庆啦!伴随着不断更替的日出日落潮涨潮汐,一梦江湖(原楚留香手游)终于1000天了这1000天里,有多少来去匆匆的过客,就有多少因热爱留下驰骋江湖的少侠。这个江湖太大了一梦江湖家园仿建究竟有多强?玩家动漫现实的场景皆可完美还原一梦江湖(原楚留香手游)这款游戏自上线以来可以说是广受玩家们的关注,凭借捏脸家园以及乐器玩具等诸多玩法吸引了不少的玩家。在这些玩法中最受玩家们关注的当属家园系统啦,毕竟行走江湖的同一梦江湖江湖不是打打杀杀,而是人情世故!游戏之外还有骚操作一梦江湖江湖不是打打杀杀,而是人情世故!游戏之外还有骚操作一梦江湖(原楚留香手游)作为一款古风武侠手游,高度开放的游戏模式以及精致建模使其拥有了非常大的玩家体量,堪称是以款国民级别炉石传说大哥牧猖獗?Otk永远的王者超越法稳吃大哥牧不知道小伙伴最近有没有玩狂野模式,现在狂野模式曾经的王者大哥牧回来了。带着他的新卡解读手相和狗货之血强势归来,新的减费法术不但能帮助大哥牧发现额外的复活牌。更重要的是暗影精华的费用从炉石,魔兽到酒馆战棋,看看游戏中最知性的暗夜精灵姐姐很多炉石酒馆战棋的玩家,可能比平时打炉石传说天梯以及魔兽的玩家更为熟悉这位美丽的暗夜精灵小姐姐,她就是伊莉斯逐星。作为炉石传说的原创角色,她不但出现在了魔兽世界上个版本的剧情和任务游戏王DL国服卡组界化骨绵掌,亚马逊或成环境最简单上王卡组游戏王决斗链接的国服已经公测有了将近一周的时间,推出的新卡包使得环境有了更多的变数,而一些老卡组也是从中获得了非常多的提升,像是现阶段制裁效果怪兽非常优秀的后场天罚环境最强坑银幕镜
王者荣耀冠军杯决赛对阵出炉,QG会师eStar,猫狗大战一触即发!8月9日,2018王者荣耀冠军杯国际邀请赛半决赛已经结束,eStar零封韩国强队KZ,兑现了一分都不能丢的豪言。另一场比赛中,卫冕冠军QG鏖战7场才与BA黑凤梨决出胜负。8月11日国漫现状为什么说不死不休?如今的国漫的崛起如雨后春笋,优质的作品越来越多,而且3D动漫似乎占领了国漫界大半江山,当然那些优秀2D国漫也还是有很多的。但是更新的速度却让很多观众不吐不快!斗破苍穹斗破苍穹一直都斗破苍穹斗气大陆上混的最差的人是哪些?众所周知,在斗气大陆上,斗帝就是最强的存在,一旦晋升斗帝,那接下来就必须破开位面,去到更高的位面当中去了!有些境界细品就会发现,这部分人的处境很尴尬,可以说是大陆上混的最差的存在了斗破苍穹纳兰嫣然戏份为啥这么多?斗破苍穹前四季早已完结,其中有一个撇不开的主题,那就是萧炎和纳兰嫣然的三年之约了,可以说前四季都是围绕着这一个主题来展开的。原著中也是前期的一个小高潮,但是纵观全书,三年之约倒只算国漫主角的那些逆天功法唐三的玄天功唐三的秘密有很多,最大的自然就是转生者的身份了,两世的记忆让他在成长过程中,总是能够做到稳步前进。而玄天功的存在也是让他的修炼事半功倍,更是有紫极魔瞳控鹤擒龙玄玉手等武一念永恒第二季已经开始制作?今年能否上映?前段时间,国产2D动漫作品一念永恒完结撒花,给无数观众姥爷们带来精彩视听感受的同时,也让很多人对第二季上映不禁期待起来。作为一部优秀的国漫作品,坐拥将近19亿的播放量,肯定是要继续绝地求生玩家凭什么高概率吃鸡?原来他有这些技巧相信很多网友就算没有玩过绝地求生也对这款游戏不会很陌生,喜欢玩绝地求生的玩家们都喜欢去捡取快递,很多时候并没有很多时间给你去选择物品,因为在自己舔包的时候很有可能就会让自己腹背受敌王者荣耀峡谷中必出红莲斗篷的4位英雄,伤害翻倍!大家都知道王者荣耀现在已经有八十几个英雄,每一个英雄的出装在作战的时候会起很大的作用。其中红莲斗篷可以为英雄提高240的物理防御和1000最大生命值,因此对于许多英雄来说是一件必不王者荣耀最让人后悔购买的英雄盘点,第一名竟要2000元!有玩王者荣耀的小伙伴们都知道,在游戏内金币是一个很重要的存在,有的时候18888对于大多数玩家来说已经是要存很久的数字了,但是钱是要花的值的才可以,有的时候买了一个热门的英雄却发现王者荣耀能打能抗是好手,让我们一起致敬坦克英雄们!对于王者荣耀的新手来说,也许坦克是最好的选择了,因为坦克可以很少的死很少的复活,能抗一会!而且坦克在团队的运用是非常大的,如果说坦克发挥不好也会导致整个团队的战争失败!小编今天与大英雄联盟选对皮肤才能更快上分?王者剑圣都选它!铁血剑豪是一款特效十分酷炫的皮肤,这款皮肤在实战中特别的帅气,因此也俘获了大多数玩家的心。而且铁血剑豪应该算的上是剑圣的源计划皮肤没出来之前最经典的皮肤了。虽然特效上比不上源计划,