用python制作心型照片墙

你好~ 我是36度道,人生苦短,我用python!今天分享如何用python制作好看的心型照片墙

效果

我们先来看下效果图,了解我们接下来要做的事情,我的效果图如下:

感觉如何?如果还满意,看完幸苦点个赞,因为看完你也可以做出来!同时也是对我的一种反馈

思路

上代码之前,我们先来理清下思路,只有过程理清楚了,才能得到自己的想要的结果

制作这个我觉得最难的地方就在于每个图片的位置该怎么计算,才能凑成一个心型。但是没关系,我们不去计算,毕竟我数学很差,我采用土办法,直接把它位置写死,虽然稍微有点麻烦,但是灵活~

大家都知道excel吧,里面的表格是由一个个单元格组合而成,那请你也把上面的图想象成表格,是由很多单元格组成的,单元格的大小就是图片的尺寸,并且去掉了边框。那么制作这个心型,只要在单元格内添加单个图片,然后凑成心的形状就完成了。这就是整体的思路,接下来用代码去实现这个思路

准备

我先说下制作过程要使用哪些python库,工具总要先搞好,不然搞个der~

1、pillow:用来处理图片的库,属于第三方库,需要额外安装 pip install pillow

2、os:用来获取图片,python自带,不用额外安装

3、math:用来计算图片数量,python自带,不用额外安装

有上面三个库就可以了,接下代码走起

代码

1、导库

from PIL import Image
import os
import math

2、制作形状

我们通过二维数组确定图片的位置,每个元素相当于excel中的单元格:1代表空白,0代表图片。看到由0组成的爱心了嘛?这里纯手打(所以你可以自由改动,做出你想的形状,这就是灵活的地方~)

因为我图片有500张,所以我想做大一点,放更多的图片,所以元素的个数会比较多,下面是21x21的大小。

记住:0的个数一定要比你的图片数量少或刚好相等,否则就不是一个完整的爱心了!

map = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1],[1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1],[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],[1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],[1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
]

3、导入图片

位置确定好了,开始获取所有的图片

# 这个是我图片的所在路径
img_dir = r"C:\Users\admin\Desktop\头像"
# 获取这个文件下的所有文件,因为没有过滤其他类型文件,所以不要放非图片文件
# 返回的是一个列表
imgs = os.listdir(img_dir)
# 设置图片的尺寸,所有图片尺寸要保持统一,要有组织有纪律
img_h = img_w = 192
# 计算行数,即子列表的个数
rows = len(map)
# 计算列数,即子列表中元素的个数
columns = len(map[0])

画图

接下来就是准备一个白色的背景,当作画布。有了行数、列数和图片的宽高,就可以计算出整个画布的尺寸了

# 第一个参数照着写
# 第二个参数需要传入一个元组,元组的第一个参数是画布的宽,第二个是高
# 第三个参数传入的是画布的颜色
# 使用Image.new()方法创建一个画布
figure = Image.new("RGB", (img_w*columns, img_h*rows),"white")

到目前为止,图片和画布都已经准备好了,现在就是将图片放置在画布对应的位置上了,即数组中元素为0的位置

# 表示图片的下标
count = 0
# 遍历行
for i in range(len(map)):# 遍历每行中的所有元素for j in range(len(map[i])):# 如果元素是1,就不管它if map[i][j] == 1:continue# 如果元素是非1,即0就放图片上去else:# 做个异常处理,防止有些图片打开失败,导致程序中断try:# 使用Image.open("图片路径")方法获取图片对象image = Image.open(os.path.join(img_dir, imgs[count]))except:continue# resize((新的宽,新的高))用来改变图片的尺寸,接收一个元组image = image.resize((img_w, img_h))# 将修改尺寸后的图片(image)粘贴(paste)到画布(figure)上# 第一个参数 是图片对象# 第二个参数是 图片在画布上的位置,相当于单元格的位置figure.paste(image, (img_w*j, img_h*i))# 使用完一张图片就要记录下来,并开始使用下一张图片count += 1# 当循环结束,即表示心型照片图已经完成
# 将画好的画布显示出来,给你看到
figure.show()
# 不满意在调整二维数组中0的位置,满意可以保存到本地,用来装逼
# 需要告知程序图片保存的路径
figure.save('心型照片墙.png')

到此,心型照片墙就制作出来了,如果你有女朋友,可以用自己女朋友的照片,背景用红色,然后发给你女朋友看,会不会更爱你我就不知道了,也可以写个i love you~(图如下)。可惜我没有,好气哦!

用python制作心型照片墙相关推荐

  1. python制作心形照片墙_这个七夕节,用Python为女友绘制一张爱心照片墙吧!

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  2. python制作心形照片墙_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  3. python制作心形照片墙_用Python把情人节拍的照片,做成照片墙

    "我写过最得意的代码,就是让你答应做我女朋友的那串代码." 撩妹可不能全靠一张嘴 礼物一定要走心又有心! 恋习Python教你一招 搞定速速开撩! 用Python为她DIY一张照片 ...

  4. 实战|用 Python 轻松制作好看的心型照片墙

    人生苦短,我用Python!今天分享如何用Python制作好看的心型照片墙. 一.效果 我们先来看下效果图,了解我们接下来要做的事情,我的效果图如下: 感觉如何?如果还满意,看完幸苦点个赞,因为看完你 ...

  5. 实战 | 用 Python 轻松制作好看的心型照片墙

    人生苦短,我用Python!今天分享如何用Python制作好看的心型照片墙. 一.效果 我们先来看下效果图,了解我们接下来要做的事情,我的效果图如下: 感觉如何?如果还满意,看完幸苦点个赞,因为看完你 ...

  6. python制作任意形式照片墙

    用python做任意文字图片墙 今天应产品经理夫人的要求,需给其做一张"青春"图与"爱心"图. 安排!!! 直接上代码: import pygame from ...

  7. 圣诞节这么浪漫的日子,教你用Python制作表白神器—照片墙,操作起来哦

    哈喽.大家好,我是恰恰~今天教大家用Python来制作一个表白神器-照片墙,属于我们程序员的小浪漫,虽然来的晚,但是收藏学会了,以后都用的到哦~ 看一下效果图: 要什么样的,图案都可以自定义的 在这里 ...

  8. python动态心形代码-Python数学方程式画心型图案源码示例

    如下几个心型图案,是用Python科学计算,根据数学方程式画出的.虽然心型不是特别的完美,但大体效果还是呈现出来了,还可以做更多的改进. """ '17*x^2 - 16 ...

  9. Python+matplotlib绘制散点图模拟心型图案

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年3月第6 ...

最新文章

  1. python计算机视觉常见报错及解决方案(不断更新中)
  2. 使用Android内部的DownloadProvider下载文件,并获取cache权限 .
  3. java八种排序算法---直接插入排序
  4. Struts2知识点总结
  5. Hive创建外部表以及分区
  6. vtk c++ 图像分割_医学图像分割-Attention Unet
  7. linux程序执行时内存情况
  8. Asp.net页面传值
  9. java毕业设计小区停车场管理系统(附源码、数据库)
  10. 新课程背景下高中化学实验室的硬件建设要求
  11. 《星科快报》第二期:元宇宙之道.
  12. MATLAB的bertool绘制误码率理论值与仿真值对比曲线
  13. 摄影基础知识——曝光和测光
  14. Python with as用法详解
  15. 粗糙集(Rough Sets)
  16. [原创] 仿滴滴出行打车APP定位导航,增加RFID认证、海外版、司机证件号码识别功能
  17. linux升级gfortran,linux的gfortran的code到IVF,需要做哪些处理??急!
  18. 金属胁迫+转录组=高分好文
  19. python学习-第9课
  20. 球幕投影中内投球和外投球的区别

热门文章

  1. php shm,PHP shm_put_var()访问已释放资源漏洞
  2. win10 内存居高不下,资源管理器看不到运行进程,达到百分之八九十的解决办法
  3. 益聚星荣:卖衣服不如卖房?波司登、鸿星尔克纷纷出手…
  4. 小二告诉你,微淘该发什么样的内容?
  5. 服务器过热自动关机重启,CPU过热电脑会自动关机吗
  6. CA大佬王嘉廉去世,享年74岁
  7. Android SDK 2.1 - Dev Guide - Best Practives - UI Guidelines - Activity and Task Design - 中文/Chinese
  8. 请叫我程序员 第1章
  9. matlab产生电弧信号,Matlab7.0下电弧模型的建立与分析
  10. mpg123播放器的安装与使用