不到100行代碼 Python製作一個九宮格圖片生成器,炫酷朋友圈!

2020-12-11 Z先生點記

點擊上方 Z先生點記,加為星標第一時間收到 Python 技術乾貨!

朋友圈下面的這種圖片排列風格,相比大家一定會很熟悉,有關於職位招聘的

祝賀節日的,

篩自己美照的,

這種因為圖片剛好為 3*3 的排列方式,所以被稱為 9 宮格圖片風格,圖片的生成原理就是把一張圖片按區域等比例分為 9 份碎片,朋友圈發狀態時只需要自己調整一下圖片碎片放置位置即可。

雖然 9 宮格製作原理相對比較簡單,但它的加入讓朋友圈中只有一張圖片的動態在視覺方面提升了一個檔次

接下來 本文將介紹如何用 Python 將一張圖片轉化為 9 宮格,並加入 GUI 界面,封裝成一個程序,先看一下程序的預覽效果:

本次製作的環境配置介紹如下:

Python 3.7;Opencv: 3.4;PyQt5 : 5.9;製作步驟

首先先將一下九宮格圖片轉換的基本思路:

1,先把圖片變為正方形,不夠的邊用白色像素填充;2,找到圖片的三等距離,用 for 遞歸形式 把圖片劃分為 9 個區域,並存儲為列表,因為這裡的圖片是以數組形式表示,因此根據數組形式很好劃分;3,把 2 分割得到的圖片列表分別進行存儲,利用文件名來進行編號;核心代碼如下:

if self.open_file_path and self.save_file_path:try: img = cv2.imread(self.open_file_path)if len(img.shape) == 2: # 判斷是否為灰度圖 last_dim = 1else: last_dim = 3if img.shape[0] != img.shape[1]:# 長寬不一致 new_image = np.zeros((max(img.shape), max(img.shape), last_dim), dtype=np.uint8) + 255# 圖像填充 new_image[ int((new_image.shape[0] - img.shape[0]) / 2):img.shape[0] + int((new_image.shape[0] - img.shape[0]) / 2), int((new_image.shape[1] - img.shape[1]) / 2):img.shape[1] + int((new_image.shape[1] - img.shape[1]) / 2),:] = imgelse: new_image = img# 開始進行圖像分割 col_width = int(new_image.shape[0] / 3)# 得到九宮格圖像 image_list = [new_image[i * col_width:(i + 1) * col_width, j * (col_width):(j + 1) * col_width, :] for i in range(3) for j in range(3)]for i in range(9): image_name = str(i) save_image_path = os.path.join(self.save_file_path, f'{image_name}.png') cv2.imwrite(save_image_path, np.array(image_list[i])) print(f'save {image_name} sucessfully!') QMessageBox.information(self,'info','轉換完成!')except Exception as e: print(e) QMessageBox.warning(self,'error',f'轉換失敗{str(e)}')else: QMessageBox.information(self,'err','文件為空,請重新操作')GUI 封裝

第二部分就是 GUI 封裝,這裡我用的是 PyQt5 ,創建一個 QWidgt 組件,放置三個按鈕,兩個 LineEdit 共5個組件,因為沒有設置任何屬性(顏色、背景、交互效果),也沒排版,所以程序比較簡陋

在程序裡,還在交互界面中加入了一些異常信息處理,比如打開地址為空、轉換失敗,程序會給相應的提示,比如下面這種,在沒有選擇文件夾時點擊 開始轉換按鈕,給出了錯誤提示

GUI 界面的主要代碼部分:

defopen_origin_file(self): open_file = QFileDialog.getOpenFileName(None,"Open File","C:/","Image (*.png)")if open_file[0]: print(open_file[0]) self.open_file_path = open_file[0] self.line_edit.setText(self.open_file_path)else: QMessageBox.warning(self,"info","Fail to open file, please try it again!")defsave_file(self): open_file = QFileDialog.getExistingDirectory(None,'Open File','C:/')if open_file: print(open_file) self.save_file_path = open_file self.line_edit1.setText(str(self.save_file_path))else: QMessageBox.warning(self,'info','Fail to open file, Please try it again!')這裡我找了一張圖片來測試一下這個小程序,圖片是一個動漫角色-皮卡丘,效果如下,

最後隨意找了一張圖片做成九宮格發到了朋友圈,結果在下面第二張圖片(原圖為第一張),客觀一點地說,相對於單張圖片視覺效果並沒有提升,主要原因就是原圖的長寬高比例不一致,也就是說,對於某些長寬不一致的圖片在轉化為九宮格之前最好裁剪一下效果會更好,否則並不適合轉化為九宮格

原圖

沒裁剪直接轉化的圖

裁剪之後轉化的圖

相關焦點

  • 朋友圈的可可愛愛 粉嫩九宮格圖片
    點擊上方藍字關注頭像壁紙表情包吶立刻設置我為✨星標/置頂✨- 謝謝你圖源網絡丨吶子整理丨禁整篇搬運丨禁同行根據聯合國的規定好看的九宮格圖片壁紙要發出來共享超多人求圖👍 抖音小紅書巨火「適合發朋友圈的九宮格圖片套圖呀」再也不怕發朋友圈沒素材啦趕緊拿去用叭~🚩 小貼士:長按圖片選擇保存到手機💗①➕朋友圈九宮格「宇宙第一美」中間直接放照片
  • 朋友圈心形九宮格圖片怎麼做 馬上就要到520情人節了
    朋友圈心形九宮格圖片怎麼做 馬上就要到520情人節了時間:2020-05-19 17:04   來源:114手機樂園   責任編輯:凌君 川北在線核心提示:原標題:朋友圈心形九宮格圖片怎麼做 馬上就要到520情人節了 微信朋友圈心型9宮格照片怎麼弄?
  • 微信朋友圈愛心形九宮格圖片用什麼軟體 拼圖教程分享
    最近很多小夥伴們都在微信朋友圈中發九張圖片拼成的一個愛心九宮格圖片,相當的好看,不會的小夥伴們就來和小編一起看看微信朋友圈九宮格拼圖教程吧!  微信朋友圈怎麼發九宮格圖片  第一步:在美圖秀秀首頁點擊【拼圖】,上傳9張圖片,拼圖排在第6、8、9位置,其他位置放白圖,然後點擊【開始拼圖】這裡記得選擇【無邊框】的【九宮格】模板,完成後點擊右上角的【√】即可保存。
  • 抖音製作九宮格圖片是用什麼軟體弄的 製作九宮格圖APP分享
    現在抖音已經成為了流量之王,很多軟體和它相比都處於下風,近來抖音上比較流行發九宮格的圖片,那麼製作九宮格圖片的軟體是什麼呢,下面就和小編一起來看看吧!  抖音製作九宮格的軟體是什麼?  抖音製作九宮格圖片的軟體是九格切圖。
  • ppt圖片技巧:手把手教你做九宮格圖片的方法
    我們經常翻朋友圈、微博,會看到有些人發動態,紛紛將自己旅遊、美食、愛豆的美照編輯成九宮格的形式發布分享,比如,這樣......這種「九宮格」圖片如今在朋友圈、微博很流行,看完有沒有躍躍欲試的趕腳?想不想自己也做一個?
  • PPT製作九宮格圖片,讓你的PPT與眾不同
    圖片在PowerPoint演示文稿有著舉足輕重的作用,如果只是單純的插入圖片,那麼你的PPT顯得有些單調乏味,大眾化的作品很難讓人眼前一亮。今天一起來製作一張九宮格圖片,給你的PPT添磚加瓦。然後,在編輯區域幻燈片中,繪製一個長方形或正方形。最後,選中這個矩形,同時按下鍵盤上的Ctrl + C鍵複製矩形,接著同時按下鍵盤上的Ctrl + V鍵粘貼矩形,一共需要粘貼8張矩形。矩形的總數是九張。
  • PS實用技巧:朋友圈的九宮格圖片是怎麼做出來的?
    今日網友提問:朋友圈的九宮格圖片是怎麼做出來的?應網友提問,今天我們就來學一學日常朋友圈的九宮格圖片是咋做出來的效果圖九宮格效果圖第一步:找一張需要發朋友圈的圖片,然後用PS打開,選擇工具欄中的【裁剪工具】把圖片按照1比1的比例裁剪成正方形。
  • Python生成器next方法和send方法區別詳解
    該程序使用了文字轉語音的庫pyttsx,程序運行時,會有相對應的語音提示.pyttsx文檔 為了防止小孩亂按鍵盤,導致非法輸入,我添加了異常處理: def validate(num):#判斷輸入是否非法 try: num=int(num) except: say("非法輸入,請重新輸入") return False returnPython+OpenCv製作證件圖片生成器的操作方法本項目使用
  • PPT實用技巧-製作火爆的九宮格配圖,快到朋友圈秀一波操作吧!
    ,會讓你的朋友圈瞬間擁有高逼格,但是網絡上九宮格配圖許多都已經給別人使用過了,那有沒有辦法自己製作一組獨一無二的九宮格配圖呢?今天小編就為大家帶來,PPT實用技巧之製作朋友圈九宮圖,快來學習吧!雖然手機上也有部分軟體可以製作九宮格圖片,但是許多軟體不是需要開會員,就是圖片被壓縮模糊,或者強行插入自己的logo,這就讓人頭疼了,其實powerpoint就可以製作九宮格配圖,而且圖片不會壓縮還可以輸入自己喜歡的文字。
  • 朋友圈心形九宮格圖片怎麼做 9宮格愛心照片製作教程
    微信朋友圈心型9宮格照片怎麼弄?馬上就要到520情人節了,很多人把微信頭像都換成愛心形狀的了,來表達自己對另一半的愛意。而微信心形頭像怎麼弄出來的呢?今天小編就為大家帶來關於微信朋友圈心型9宮格拼圖方法教程,希望能夠幫助大家。
  • 抖音心形照片怎麼擺 心形拼圖九宮格製作教學
    抖音心形照片怎麼擺 心形拼圖九宮格製作教學 最近刷抖音的抖友們應該都看到過一款心形的朋友圈九宮圖,因此自己也想做,但是又不知道怎麼擺!那麼抖音的心形照片是怎麼擺的呢?大家別著急,一起來看看吧。
  • Python利用openpyxl處理Excel文件(單元格及行列具體操作)
    合併單元格並設置單元格樣式(四)插入行列ws.insert_rows(n) # 在第n行插入一行(ws.rows和ws.columns),這兩個生成器裡面存儲了每一行(列)的數據,每一行由一個tuple包裹,便於對行列進行遍。
  • 朋友圈裝逼圖片生成器集合
    如此這些朋友圈的曬圖,是不是看的你羨慕嫉妒恨呢?其實其中的一部分原來是使用網頁來一鍵生成的裝逼圖片,這不接下來筆者就要給各位介紹一些朋友圈的裝逼圖片生成器,讓你也能娛樂一下。不過裝逼可不要太過分哦,比如你說買了一架飛機那可是牛皮吹上天了!
  • PS技能丨如何利用PS製作九宮格圖片效果
    對於九宮格圖片,相信對大家並不陌生,經常見,對於做內容營銷的人來說經常會用到九宮格圖片;今天紅哥要給大家分享的是九宮格效果圖如何製作?一、按Ctrl+O快捷鍵打開素材圖,用矩形工具畫線條:二、按V切換到移動工具,在圖片區域,單擊矩形1圖層選中圖層,然後按ALT+SHIFT,拖動滑鼠複製線條到合適位置,然後鬆開滑鼠和按那鍵,可以複製得到矩形
  • 什麼是Python的迭代器和生成器?(附代碼)
    utm_source=blog&utm_medium=python-iterators-and-generators這是我們要介紹的內容:什麼是可迭代對象?什麼是Python迭代器?在Python中創建一個迭代器熟悉Python中的生成器實現Python中的生成器表達式為什麼你應該使用迭代器?
  • 配圖‖聽說最近流行朋友圈九宮格配圖
    配圖‖聽說最近流行朋友圈九宮格配圖
  • 公眾號文章九宮格點擊拼圖特效素材怎麼製作,一分鐘教程奉上
    公眾號文章點擊出現的互動九宮格圖片效果怎麼做,這個效果是上層是九宮格蒙版,點擊後每個方格出現隱藏的部分,然後組成一個完整的圖片,具體效果可以看內文。公眾號文章九宮格點擊拼圖特效素材九宮格是在朋友圈常常使用的一種展現形式,那如何在公眾號文章裡面使用呢?今天鍵盤喵就介紹一下這種特效的具體製作過程和使用方法。
  • 敘利亞招聘籤僱傭兵合同圖片生成器 在線p圖發朋友圈
    敘利亞僱傭兵合同生成器軟體是網上很火的一款敘利亞僱傭兵合同生成惡搞p圖軟體,用戶可以自定義生成敘利亞僱傭兵裝X圖等功能,發送給朋友圈好友瞬間X格滿滿,非常的有趣哦,趕快玩起來吧!  敘利亞僱傭兵合同生成器使用說明:  敘利亞僱傭兵合同生成器,信息可以自行修改,發空間裝X。
  • ​如何使用生成器減少內存佔用,並讓Python代碼運行更快?
    本文轉載自公眾號「讀芯術」(ID:AI_Discovery)如何使用生成器減少內存佔用並讓Python代碼運行更快,關乎你「代碼人生」的生死存亡。 然而,當我剛開始學習Python生成器時,並不知道它最後會顯得如此重要。 但在學習機器學習的過程中需要編寫自定義函數時,它發揮了不可取代的作用。
  • 發朋友圈九宮格素材拼圖
    發朋友圈九宮格素材拼圖