1. 首页
  2. Python

柚子教大家如何用python做精美的照片墙!五分钟学会get新技能

“u003Cdivu003Eu003Cpu003E在朋友圈中你肯定会见到过下面这样的照片,由数张照片拼接成一张具有规则图案形状的照片墙。u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F90598e94515349c5a8bdd68ac4fd59b5″ img_width=”600″ img_height=”472″ alt=”柚子教大家如何用python做精美的照片墙!五分钟学会get新技能” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E其实这样的一张照片也可以用 python 实现,主要用到的是 python 中的 Image 库;制作之前需要一些准备:u003Cu002Fpu003Eu003Cpu003E作为照片背景墙的矢量图(矢量图是图案的轮廓填充是透明的,其他部分是非透明的白色的;利用PS就可以简单制作,制作方法在下面);u003Cu002Fpu003Eu003Cpu003E填充照片墙的图片集;u003Cu002Fpu003Eu003Cpu003Epython3.6+ 版本的安装及 Image 包;u003Cu002Fpu003Eu003Cpu003E原本这篇文章打算想结合python的另一个包 itchat 获取微信好友头像作为图片集,来进行实战。u003Cu002Fpu003Eu003Cpu003E但不幸的是,微信官方在6月份的时候只限制新注册用户,老注册用户在 itchat 上能够正常登陆使用,但在今年9月份新老用户都进行了限制,关闭了所有微信用户在 itchat 平台上的登陆接口,好友信息我们也就没办法快速获取………u003Cu002Fpu003Eu003Cpu003E在找图片集的时候,建议大家可以把自己手机里的相册打包成一个文件夹,也可以利用爬虫技术在网上爬取一些自己喜欢的图片打包成一个集合,作为一个图片集;毕竟,图片不重要,重要的是方法。u003Cu002Fpu003Eu003Cpu003E作为背景墙的矢量图制作方法如下:u003Cu002Fpu003Eu003Cpu003E选取一张里面有自己中意的轮廓的图(图片背景墙的好坏取决于它的轮廓)u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F707dea345475403d9c6a564fb8897af6″ img_width=”600″ img_height=”268″ alt=”柚子教大家如何用python做精美的照片墙!五分钟学会get新技能” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E利用ps打开图片,利用 快速选择工具 选取自己中意的轮廓,把透明度降为0;u003Cu002Fpu003Eu003Cpu003E再次利用快速选择工具 选取把透明度降为0外的部分,用纯白颜色填冲;u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fc8299073ddf04c70b684263a95c6fc19″ img_width=”600″ img_height=”273″ alt=”柚子教大家如何用python做精美的照片墙!五分钟学会get新技能” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E3.导出图片(PS:因为图片后面要用到,所以路径中尽可能不要出现中文)u003Cu002Fpu003Eu003Cpu003E所有工作准备完毕之后,接下来就是要用python进行处理,定制照片墙的制作原理就是:u003Cu002Fpu003Eu003Cpu003E读取图片背景墙,用Image绘制一个相应大小的模板片;u003Cu002Fpu003Eu003Cpu003E遍历图片集获取图片数量,根据背景墙图片大小以及图片集数量,找到一个图片合适的尺寸;u003Cu002Fpu003Eu003Cpu003E按照尺寸把图片集的图片依次拼接到绘制的新的模板片上;u003Cu002Fpu003Eu003Cpu003E最后根据背景墙轮廓的透明度进行二次拼接,以达到能够形成目标轮廓的目标。u003Cu002Fpu003Eu003Cpu003E制作好的图片效果如下:u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fafa6b2a9050a4fd49b9c14e7d50447dc” img_width=”600″ img_height=”600″ alt=”柚子教大家如何用python做精美的照片墙!五分钟学会get新技能” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E以上,就是照片墙的基本绘制过程,部分代码如下:u003Cu002Fpu003Eu003Cpu003Efrom PIL import Imageu003Cu002Fpu003Eu003Cpu003Eimport osu003Cu002Fpu003Eu003Cpu003Eid =’zuguo’u003Cu002Fpu003Eu003Cpu003Eimg_path =’C:u002FUsersu002FFREEDOMu002FDesktopu002Ftimg.png’u003Cu002Fpu003Eu003Cpu003E#自己找的的模板图片存储地址,需要是矢量图u003Cu002Fpu003Eu003Cpu003E#这个是我获取图片存放的文件夹,根据自己情况进行设置;u003Cu002Fpu003Eu003Cpu003Efolder =’C:u002FUsersu002FFREEDOMu002FDesktopu002F{}’.format(id)u003Cu002Fpu003Eu003Cpu003E#拼接后图片的存放位置u003Cu002Fpu003Eu003Cpu003Esave_pic_path =’C:u002FUsersu002FFREEDOMu002FDesktopu002F{}.jpg’.format(id)u003Cu002Fpu003Eu003Cpu003Eimg =Image.open(img_path)u003Cu002Fpu003Eu003Cpu003Ew,h =img.size#获取图片大小u003Cu002Fpu003Eu003Cpu003Enew_img = Image.new(‘RGB’,(w,h),’#FFFFFF’)#创建新的图片,大小与原图片一样u003Cu002Fpu003Eu003Cpu003Eunit_size =60u003Cu002Fpu003Eu003Cpu003Ey_index = hu002Fu002Funit_sizeu003Cu002Fpu003Eu003Cpu003Ex_index = wu002Fu002Funit_size#双斜杠表示:先做除法,再向下取整;u003Cu002Fpu003Eu003Cpu003Epic_list = []#存放图片位置u003Cu002Fpu003Eu003Cpu003Efor i in os.listdir(folder):u003Cu002Fpu003Eu003Cpu003Eprint(i)u003Cu002Fpu003Eu003Cpu003Eif i.endswith(‘.jpg’):u003Cu002Fpu003Eu003Cpu003Epic_list.append(i)u003Cu002Fpu003Eu003Cpu003Etotal =len(pic_list)u003Cu002Fpu003Eu003Cpu003Ex = 0u003Cu002Fpu003Eu003Cpu003Ey = 0u003Cu002Fpu003Eu003Cpu003Efor i in range(x_index*y_index):u003Cu002Fpu003Eu003Cpu003E”’u003Cu002Fpu003Eu003Cpu003E把folder中存放的图片集贴入到你想要贴的图片上,u003Cu002Fpu003Eu003Cpu003E”’u003Cu002Fpu003Eu003Cpu003Eprint(f’目前进度为{i}\{x_index*y_index}’)u003Cu002Fpu003Eu003Cpu003Etry:u003Cu002Fpu003Eu003Cpu003E#利用 Image.resize()来规定图片大小,其中Image.ANATILAS表示的是高质量图片;u003Cu002Fpu003Eu003Cpu003Etest = Image.open(‘{}u002F{}’.format(folder,pic_list[i%total])).resize((unit_size,unit_size),Image.ANTIALIAS)u003Cu002Fpu003Eu003Cpu003Enew_img.paste(test, (x * unit_size, y * unit_size))u003Cu002Fpu003Eu003Cpu003Ex += 1u003Cu002Fpu003Eu003Cpu003Eexcept IOError:u003Cu002Fpu003Eu003Cpu003Eprint(‘读取一张图片失败’)u003Cu002Fpu003Eu003Cpu003E#一排已经扫描完毕u003Cu002Fpu003Eu003Cpu003Eif x==x_index:u003Cu002Fpu003Eu003Cpu003Ex =0u003Cu002Fpu003Eu003Cpu003Ey +=1u003Cu002Fpu003Eu003Cpu003Eprint(‘素材扫描完毕’)u003Cu002Fpu003Eu003Cpu003E下面这几张图片就是我已将做好的照片墙,是为了多国庆档电影做简单分析用的,感觉不错的话,自己也可以尝试一下,有什么疑问也可以在下面留言给我u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F6c5cefab50b14b54825df946f872a0ec” img_width=”600″ img_height=”338″ alt=”柚子教大家如何用python做精美的照片墙!五分钟学会get新技能” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Ff362c3338eff4343a1d8c73699958bed” img_width=”600″ img_height=”338″ alt=”柚子教大家如何用python做精美的照片墙!五分钟学会get新技能” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fdb3fafad3bf84b3eb07eb4749fc238a5″ img_width=”600″ img_height=”472″ alt=”柚子教大家如何用python做精美的照片墙!五分钟学会get新技能” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cpu003E完整源码私信柚子:‘资料’分享下给你们u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E下面这套python视频教程资料是小编认为非常不错的!分享给大家u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E本套视频一共400集,本套视频共分4季:u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E第一季 【基础篇】Python基础 (115集)u003Cu002Fpu003Eu003Cpu003E第二季 【提高篇】Python深入和扩展(100集)u003Cu002Fpu003Eu003Cpu003E第三季 【扩展篇】网络编程、多线程、扩展库(85集)u003Cu002Fpu003Eu003Cpu003E第四季 【高手篇】算法、Python源码、函数式编程、手工实现神经网络(100集)u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F614024e673fa409c8f96c9c273001cba” img_width=”640″ img_height=”440″ alt=”柚子教大家如何用python做精美的照片墙!五分钟学会get新技能” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E从零基础开始,全面讲解Python基础,直达可以手写神经网络的境界。u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E增加了:手写数据结构和算法、手写神经网络项目。让零基础同学在学习Python时就开始接触高深的底层知识、神经网络底层实现的知识。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E内容共分26章,讲解了Python基础的方方面面,可以作为Python学习者的“宝典”。同时,穿插了3个大型实战项目:u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E1. 坦克大战游戏。u003Cu002Fpu003Eu003Cpu003E采用游戏开发的方式,寓教于乐,快乐中掌握Python基础。u003Cu002Fpu003Eu003Cpu003E2. 手写算法和数据结构。u003Cu002Fpu003Eu003Cpu003E算法和数据结构是很多大公司面试的不二选择,我们这里讲解内容的同时,手把手带你实现一个个底层算法,将内功练扎实。u003Cu002Fpu003Eu003Cpu003E3. 手写神经网络。u003Cu002Fpu003Eu003Cpu003EPython是人工智能的第一语言。我们创造性的在基础课程中就加入了如何编写一个自己的神经网络,为踏入神经网络的大门打下“坚实基础”。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E。。。这么这套学习教程怎么获取呢获取呢?u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E….1、只需转发+关注;u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E……2.然后私信小编“资料”即可免费带走哦!。。。。。。。。。。。。。u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:柚子教大家如何用python做精美的照片墙!五分钟学会get新技能

主题测试文章,只做测试使用。发布者:醒百年,转转请注明出处:http://www.cxybcw.com/13534.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code