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