欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)心型照片墻效果

 更新時(shí)間:2021年09月05日 08:57:26   作者:30度道  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)心型照片墻效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

今天分享如何用python制作好看的心型照片墻,供大家參考,具體內(nèi)容如下

效果

我們先來看下效果圖,了解我們接下來要做的事情,我的效果圖如下:

感覺如何?如果還滿意,看完幸苦點(diǎn)個(gè)贊,因?yàn)榭赐昴阋部梢宰龀鰜?!同時(shí)也是對(duì)我的一種反饋

思路

上代碼之前,我們先來理清下思路,只有過程理清楚了,才能得到自己的想要的結(jié)果

制作這個(gè)我覺得最難的地方就在于每個(gè)圖片的位置該怎么計(jì)算,才能湊成一個(gè)心型。但是沒關(guān)系,我們不去計(jì)算,畢竟我數(shù)學(xué)很差,我采用土辦法,直接把它位置寫死,雖然稍微有點(diǎn)麻煩,但是靈活~

大家都知道excel吧,里面的表格是由一個(gè)個(gè)單元格組合而成,那請(qǐng)你也把上面的圖想象成表格,是由很多單元格組成的,單元格的大小就是圖片的尺寸,并且去掉了邊框。那么制作這個(gè)心型,只要在單元格內(nèi)添加單個(gè)圖片,然后湊成心的形狀就完成了。這就是整體的思路,接下來用代碼去實(shí)現(xiàn)這個(gè)思路

準(zhǔn)備

我先說下制作過程要使用哪些python庫,工具總要先搞好,不然搞個(gè)der~

1、pillow:用來處理圖片的庫,屬于第三方庫,需要額外安裝 pip install pillow

2、os:用來獲取圖片,python自帶,不用額外安裝

3、math:用來計(jì)算圖片數(shù)量,python自帶,不用額外安裝

有上面三個(gè)庫就可以了,接下代碼走起

代碼

1、導(dǎo)庫

from PIL import Image
import os
import math

2、制作形狀

我們通過二維數(shù)組確定圖片的位置,每個(gè)元素相當(dāng)于excel中的單元格:1代表空白,0代表圖片??吹接?組成的愛心了嘛?這里純手打(所以你可以自由改動(dòng),做出你想的形狀,這就是靈活的地方~)

因?yàn)槲覉D片有500張,所以我想做大一點(diǎn),放更多的圖片,所以元素的個(gè)數(shù)會(huì)比較多,下面是21x21的大小。

記?。?的個(gè)數(shù)一定要比你的圖片數(shù)量少或剛好相等,否則就不是一個(gè)完整的愛心了!

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、導(dǎo)入圖片

位置確定好了,開始獲取所有的圖片

# 這個(gè)是我圖片的所在路徑
img_dir = r"C:\Users\admin\Desktop\頭像"
# 獲取這個(gè)文件下的所有文件,因?yàn)闆]有過濾其他類型文件,所以不要放非圖片文件
# 返回的是一個(gè)列表
imgs = os.listdir(img_dir)
# 設(shè)置圖片的尺寸,所有圖片尺寸要保持統(tǒng)一,要有組織有紀(jì)律
img_h = img_w = 192
# 計(jì)算行數(shù),即子列表的個(gè)數(shù)
rows = len(map)
# 計(jì)算列數(shù),即子列表中元素的個(gè)數(shù)
columns = len(map[0])

畫圖

接下來就是準(zhǔn)備一個(gè)白色的背景,當(dāng)作畫布。有了行數(shù)、列數(shù)和圖片的寬高,就可以計(jì)算出整個(gè)畫布的尺寸了

# 第一個(gè)參數(shù)照著寫
# 第二個(gè)參數(shù)需要傳入一個(gè)元組,元組的第一個(gè)參數(shù)是畫布的寬,第二個(gè)是高
# 第三個(gè)參數(shù)傳入的是畫布的顏色
# 使用Image.new()方法創(chuàng)建一個(gè)畫布
figure = Image.new("RGB", (img_w*columns, img_h*rows),"white")

到目前為止,圖片和畫布都已經(jīng)準(zhǔn)備好了,現(xiàn)在就是將圖片放置在畫布對(duì)應(yīng)的位置上了,即數(shù)組中元素為0的位置

# 表示圖片的下標(biāo)
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:
            # 做個(gè)異常處理,防止有些圖片打開失敗,導(dǎo)致程序中斷
            try:
                # 使用Image.open("圖片路徑")方法獲取圖片對(duì)象
                image = Image.open(os.path.join(img_dir, imgs[count]))
            except:
                continue
            # resize((新的寬,新的高))用來改變圖片的尺寸,接收一個(gè)元組
            image = image.resize((img_w, img_h))
            # 將修改尺寸后的圖片(image)粘貼(paste)到畫布(figure)上
            # 第一個(gè)參數(shù) 是圖片對(duì)象
            # 第二個(gè)參數(shù)是 圖片在畫布上的位置,相當(dāng)于單元格的位置
            figure.paste(image, (img_w*j, img_h*i))
            # 使用完一張圖片就要記錄下來,并開始使用下一張圖片
            count += 1
        
# 當(dāng)循環(huán)結(jié)束,即表示心型照片圖已經(jīng)完成
# 將畫好的畫布顯示出來,給你看到
figure.show()
# 不滿意在調(diào)整二維數(shù)組中0的位置,滿意可以保存到本地,用來裝逼
# 需要告知程序圖片保存的路徑
figure.save('心型照片墻.png')

到此,心型照片墻就制作出來了,如果你有女朋友,可以用自己女朋友的照片,背景用紅色,然后發(fā)給你女朋友看,會(huì)不會(huì)更愛你我就不知道了,也可以寫個(gè)i love you~(圖如下)??上覜]有,好氣哦!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • 能讓Python提速超40倍的神器Cython詳解

    能讓Python提速超40倍的神器Cython詳解

    今天帶大家了解一下能讓Python提速超40倍的神器,文章圍繞著神器Cython展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • python制作小說爬蟲實(shí)錄

    python制作小說爬蟲實(shí)錄

    本文給大家介紹的是作者所寫的第一個(gè)爬蟲程序的全過程,從構(gòu)思到思路到程序的編寫,非常的細(xì)致,有需要的小伙伴可以參考下
    2017-08-08
  • 通過Python實(shí)現(xiàn)對(duì)SQL Server 數(shù)據(jù)文件大小的監(jiān)控告警功能

    通過Python實(shí)現(xiàn)對(duì)SQL Server 數(shù)據(jù)文件大小的監(jiān)控告警功能

    這篇文章主要介紹了通過Python實(shí)現(xiàn)對(duì)SQL Server 數(shù)據(jù)文件大小的監(jiān)控告警,本文給大家分享問題報(bào)錯(cuò)信息及解決方案,需要的朋友可以參考下
    2021-04-04
  • Python、PyCharm安裝及使用方法(Mac版)詳解

    Python、PyCharm安裝及使用方法(Mac版)詳解

    這篇文章主要為大家詳細(xì)介紹了Mac版的Python、PyCharm安裝及使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 玩轉(zhuǎn)python爬蟲之cookie使用方法

    玩轉(zhuǎn)python爬蟲之cookie使用方法

    Cookie用于服務(wù)器實(shí)現(xiàn)會(huì)話,用戶登錄及相關(guān)功能時(shí)進(jìn)行狀態(tài)管理,這篇文章主要介紹了使用python處理cookie的方法,感興趣的小伙伴們可以參考一下
    2016-02-02
  • pandas分組排序 如何獲取第二大的數(shù)據(jù)

    pandas分組排序 如何獲取第二大的數(shù)據(jù)

    這篇文章主要介紹了pandas分組排序 獲取第二大的數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python批量同步web服務(wù)器代碼核心程序

    python批量同步web服務(wù)器代碼核心程序

    這篇文章主要介紹了python批量同步web服務(wù)器代碼核心程序,需要的朋友可以參考下
    2014-09-09
  • Python常用編譯器原理及特點(diǎn)解析

    Python常用編譯器原理及特點(diǎn)解析

    這篇文章主要介紹了Python常用編譯器原理及特點(diǎn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python中ConfigParse模塊的用法

    python中ConfigParse模塊的用法

    這篇文章主要介紹了python中ConfigParse模塊的用法,以實(shí)例形式講述了配置文件模塊ConfigParse的使用步驟,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • Python中的序列化詳細(xì)解析

    Python中的序列化詳細(xì)解析

    這篇文章主要介紹了Python中的序列化詳細(xì)解析,序列化是指把程序中的一個(gè)類轉(zhuǎn)化成一個(gè)標(biāo)準(zhǔn)化的格式,標(biāo)準(zhǔn)化的意義是這個(gè)格式可以跨程序,跨平臺(tái)的被使用,而且保持其原有的內(nèi)容,規(guī)范,需要的朋友可以參考下
    2023-11-11

最新評(píng)論