微信群「斗图」总输,Python助我超神!
生活随笔
收集整理的這篇文章主要介紹了
微信群「斗图」总输,Python助我超神!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
微信斗圖
微信斗圖,大家最喜歡的就是發布Gif動圖了。它的原理其實很簡單,就是一幀一幀的圖片拼接在一起,組合而成的。當他們來回切換的速度很快時,就相當于在看電影。
假如有這樣一組圖片:
如果制作完成后,是這樣的:
還是挺有意思的,如果換成你女友的照片,制作后發給她,肯定對你很崇拜。
制作過程
整個制作流程很簡單,共分為7步。
這里首先導入需要使用的2個庫。
import?os import?imageio1. 獲取當前的工作路徑
path?=?os.getcwd() print(path)結果如下:
2. 獲取當前工作路徑下的文件列表
file_list?=?os.listdir(path) print(file_list)結果如下:
3. 復制一個列表
這里介紹的是列表的copy()方法,大家可以自行下去對比學習它與deepcopy()方法的區別。
png_list?=?file_list.copy() print(png_list)結果如下:
4. 只保留結尾都是jpg的文件
如果你的圖片既有jpg,又有png,就需要你在這里加一個判斷。
for?file?in?file_list:if?file[-3:]!=?"jpg":png_list.remove(file) print(png_list)結果如下:
5. 將圖片文件中的數字,升序排列
可以看到,我這里文件的數字都是1-7排列好的,升序排列后,數字較小的圖片,位于gif動態圖的最前面。
jpg_list.sort(key=lambda?x:?float(x[:-4])) jpg_list結果如下:
6. 拼接得到每張圖片的絕對路徑
for?jpg?in?jpg_list:image_path?=?os.path.join(path,?jpg)print(image_path)結果如下:
7. 獲取每張照片的RGB通道值,將7張照片的RGB通道值,保存在列表中
frames?=?[] for?jpg?in?jpg_list:image_path?=?os.path.join(path,?jpg)frames.append(imageio.imread(image_path)) print(len(frames))結果如下:
8. 將圖片保存為gif圖,設置了切換時間
gif_path?=?os.path.join(path,?"my_gif.gif") imageio.mimsave(gif_path,?frames,?'GIF',?duration=0.2)Python模塊 | 這份os模塊知識詳解,太牛逼!
E?N?D
各位伙伴們好,詹帥本帥假期搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數據類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)
牛逼!Python函數和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結
以上是生活随笔為你收集整理的微信群「斗图」总输,Python助我超神!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上午写了一段代码,下午就被开除了...
- 下一篇: 两次深度debug经历,希望大家不要踩坑