日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python保存图片到指定路径_使用Python将不同大小照片制作为GIF动画2

發布時間:2025/3/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python保存图片到指定路径_使用Python将不同大小照片制作为GIF动画2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:本文介紹如何使用Python將不同大小的照片制作為GIF動畫,文末附源代碼。閱讀完本文,你將學會使用Python編寫程序,將不同大小的照片制作為心儀的GIF動畫。

在上一篇文章里,介紹了使用Python和imageio,不改變圖片大小,把相同大小(分辨率)的多張照片制作為GIF的方法。一般來說,只有從視頻提取的幀序列的分辨率才保持一致。此時使用該方法是沒有問題的。

一、問題的引出

不過在大部分情況下,你面對的是不同分辨率的圖片,有豎版照片、橫版照片、高寬相同的照片,即使是豎版或橫版,其高寬比也不相同。那么,如何將不同分辨率的照片制作為GIF動畫呢?

由于GIF動畫要求所有幀的分辨率必須相同,因此要先把不同分辨率的圖片調整為相同的分辨率。一種簡單粗暴的方法是直接將所有源圖片resize到相同大小。

下面介紹將不同大小照片制作為GIF的方法和過程。這個過程和上一篇文章所介紹的過程類似,只不過增加了使用圖像處理模塊scikit image的resize()方法來改變圖片分辨率的步驟。

二、使用的編程語言和庫

關于編程工具,推薦使用Anaconda Python. 它集成了許多常用的庫,當然包括圖像處理模塊scikit-image、制作GIF用的imageio模塊。用戶不必另行安裝,非常方便初學者使用。如果你還沒使用過Anaconda Python,請到本號的免費專欄Anaconda Python的安裝和使用,了解它的下載、安裝、使用方法。

三、準備工作

首先準備2張以上的照片。照片的大小可以不同。為驗證本文介紹的方法和代碼,建議準備至少一張豎版、一張橫版照片。所有的照片要為相同的格式。這里我們使用jpg格式。將照片放到一個文件夾里,按照你希望的播放順序將各張照片按升序命名。另外再建立一個文件夾,用來保存制作好的GIF文件。當然也可以在程序中動態創建文件夾,以后再撰文說明如何來創建。做好這些準備,就可以編寫程序,逐個讀取照片制作GIF。

四、GIF制作思路

首先導入os模塊,用于獲取指定文件夾下所有文件的名字;從scikit-image模塊(skimage)的transform子模塊導入resize()方法,用于改變圖片的分辨率;導入imageio模塊,用于讀取圖片和制作GIF。

其實關于讀取圖片和改變其分辨率,還有更好的庫可以用,例如OpenCV. 但是OpenCV需要用戶自己安裝。等以后大家對Python比較熟悉了,再介紹使用OpenCV的方法。它不但能處理照片,還可以處理視頻。比如從視頻提取幀,將照片制作為視頻,等等。

然后,使用os.listdir()方法來獲取指定路徑下所有圖片的名字列表。

第三步,創建一個初始化為空的列表,用于保存讀取的每張圖片。

第四步,創建一個循環體,遍歷圖片名字列表,拼出每張照片的全路徑名稱,使用imageio.imread()方法讀取每張照片,使用resize()方法將每張圖片改變為你希望的分辨率。為便于從手機觀看,建議將圖片的高:寬比例設置為16:9. 然后使用append()方法將resize后的圖片添加到圖片列表,直至所有圖片處理并添加到圖片列表完畢。

第五步,使用mimsave()方法將圖片列表保存為GIF。mimsave()方法主要有4個參數,第1個參數是要保存的GIF文件全路徑名稱,包括后綴名.gif;第2個參數是圖片列表;第3個參數是保存類型,設置為字符串'GIF';第4個參數為每張圖片播放持續時間,單位為秒。

五、示例源代碼

將不同大小jpg格式的照片制作為GIF動畫的示例源代碼如下。

import os,imageiofrom skimage.transform import resizepath_source='.../images/' #源照片位置path_dest='.../gif/' #GIF要保存的位置source_file_list = os.listdir(path_source) #讀取文件夾下所有文件名稱frames = [] #保存幀的列表for file in source_file_list: full_name=path_source+file #照片的全路徑名稱 frame=imageio.imread(full_name) #讀取照片 frame=resize(frame, (800,450,4)) #高寬比16:9 frames.append(frame) #將照片添加到列表 #duration:單幀持續時間,單位simageio.mimsave(path_dest+'mygif2.gif', frames, 'GIF', duration=0.8)

這個程序代碼比上一篇文章制作GIF動畫的代碼也就多了導入resize方法和使用resize()改變圖片分辨率這兩行語句,總共12行。制作的GIF效果如下圖所示。

可以看出,照片的比例失真了。這是由于對原始照片,只是簡單的使用resize()方法將其改為為指定的分辨率,改變后的分辨率與原照片不一致,因此看起來高寬比例失真。

照片比例失真將影響觀賞效果,那么該如何做到既能夠將不同大小的照片改變為具有相同分辨率,又能夠保證原照片的比例不失真呢?這個解決方法將在下一篇文章中進行介紹。請繼續關注本號的后續文章。歡迎轉發評論,有任何問題請在評論區留言。

總結

以上是生活随笔為你收集整理的python保存图片到指定路径_使用Python将不同大小照片制作为GIF动画2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。