python 照片墙,心形照片墙如何制作

  python 照片墙,心形照片墙如何制作

  在每年的520假期之前,程作为一个不折不扣的人,心里很慌,除了吃饭、买礼物和看电影,似乎没有更多的想法。本文教你用Python制作心形照片墙,有需要的可以参考。

  每年,程作为一个彻头彻尾的,都会受到很多的恐慌。除了吃饭,买礼物,看电影,好像没有更多的想法了,所以想把女朋友从以前到现在的照片全部整理出来,做一个前所未有的照片墙。

  当然我这里用的照片都是从百度上拍的,私密照片是不能公开的,哈哈~

  如果你没有女朋友,可以试试。毕竟,如果有一天你有一个!

  话不多说,言归正传。首先,整理出需要的非标准库。只有一个PIL图像处理库,另一个是os的标准库,用来操作文件。

  从PIL进口图片

  导入操作系统

  然后,定义一个二维数组。这个二维数组由0和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, 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],

  ]

  需要注意的是,零的个数实际上就是照片的个数,所以尽可能的零的个数需要小于等于照片的个数。根据自己的实际情况进行微调也是可以的。

  由于我们自己每张照片的大小可能不一样,所以放进去之后必须指定每张图片的大小。

  Img_w=img_h=192 #宽度和高度都设置为192像素。

  #计算位置二维数组的行数和列数

  行数=长度(位置)

  columns=len(位置[0])

  #使用行数和列数以及每张图片的像素计算目标画布的大小。

  canvas=Image.new(RGB ,(img _ w *列,img _ h *行),白色)

  我们需要把我们的照片放在这块画布上。

  下面带上我们需要的素材照片,设置好素材图片(女朋友照片)所在的文件夹。

   source _ img _ dir=r c : \ software \ py charm-workspace \ the-public \ test 008 \ images

  source _ imgs=OS . listdir(source _ img _ dir)

  没有女朋友的照片也不要气馁。你可以去百度下载。可以看我之前的文章‘百度图片下载2.0’,下载很多很多照片,哈哈哈哈!

  接下来就可以生成我们期待的心形照片墙了,进入收割流程。

  #定义一个下标值,方便从我们的imgs数组中取出照片。

  指数=0

  #通过遍历二维数组中的行和列,我们可以将我们的照片放在相应的位置。

  对于范围:中的行

  对于范围:中的列

  #如果当前二维数组中的元素是1,说明位置不是心脏需要的地方,所以不会处理。

  如果位置[行][列]==1:

  继续

  #如果当前2D数组中的元素是1,你需要在那个位置放一张照片。

  else:

  尝试:

  #获取一张图片,并将其作为图像对象打开

  image=image . open(OS . path . join(source _ img _ dir,source_imgs[index])

  #重设当前照片的大小

  image=image.resize((img_w,img_h))

  #将照片图像对象放在画布上的特定位置。

  canvas.paste(image,(img_w * column,img_h * row))

  #增加图片列表中图片的下标

  指数=1

  例外:

  继续

  展示照片墙

  canvas.show()

  保存照片墙

  canvas . save(“heart-photo wall . png”)

  关于用Python制作心形照片墙的效果这篇文章就到此为止了。有关Python photo wall的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: