一文教會你使用Python批量縮放圖片
導讀
為瞭解決圖片被改變大小後,比例保持不變(這樣就不會變形瞭)
圖片需要壓縮,避免填圖後的word文件太大通過Image模塊中的resize函數,就能給解決如上問題。我們還是先按“修改時間”順序獲取圖片文件夾下的所有圖片的完整路徑
實際演示階段
我們需要做的事情就是將圖一變為圖二 圖一:
圖二:
進行等比例縮小。
#將圖片按修改時間排序(這樣才能與圖片的描述一致),將路徑存入列表,以便後面逐個插入圖片時調用 import os path = "pictures" list_p = [path+"\\"+i for i in os.listdir(path)] #獲取圖片的文件名,並拼接完整路徑 list_p.sort(key=lambda path: os.path.getmtime(path)) #將列表中的文件按其修改時間排序,os.path.getmtime() 函數是獲取文件最後修改時間
list_p裡面存放的就是該文件夾下的所有圖片路徑 'pictures\\z.jpg', 'pictures\\x.jpg', 'pictures\\w.jpg', 'pictures\\y.jpg', 'pictures\\orange-flowers-2471898.jpg', 'pictures\\lime-631389.jpg', 'pictures\\v.jpg',
然後導入Image模塊。for循環遍歷所有圖片的路徑,然後讀取圖片尺寸,x對應寬度,y對應高度。這裡的單位是像素。壓縮圖片的關鍵參數是壓縮後的標準寬度x_s,我們Word模板中放置圖片的單元格寬度為6.25厘米。壓縮後的圖片分辨率是96,像素為230的時候,對應長度是6.1厘米。以上換算可參考鏈接www.gaitubao.com/tools/pixel… 。但是按230像素的寬度壓縮後,自動填充到Word文檔中後,圖片寬度變成瞭8厘米,已經超過單元格的寬度瞭。通過調試,最終將標準寬度設定為165像素,填入word中後,寬度是5.82厘米,比較適合單元格寬度。這個差異可能是換算的不精確導致。確定好標準寬度x_s後,高度y_s按照標準寬度乘上原始高寬比來確定,這樣就是保持比例壓縮,不會導致圖片變形。壓縮resize後,再保存到新的文件夾。
#按比例縮小圖片尺寸 from PIL import Image for infile in list_p: im = Image.open(infile) (x,y) = im.size #讀取圖片尺寸(像素) x_s = 165 #定義縮小後的標準寬度 y_s = int(y * x_s / x) #基於標準寬度計算縮小後的高度 out = im.resize((x_s,y_s),Image.ANTIALIAS) #改變尺寸,保持圖片高品質 out.save('pictures_new\\{}'.format(infile.split("\\")[-1]))
就這樣簡單的幾步我們就得到瞭想要的結果把圖片壓縮成瞭:
壓縮前:
結果:
詳細介紹該庫
上面的介紹是不是很簡單不過它隻是PIL的一個功能下面我們詳細介紹一下。
Python Imaging Library ( PIL ) 給 Python 增加瞭圖像處理能力。
這個庫提供瞭廣泛的文件格式支持,高效的內部展現,以及十分強大的圖像處理能力。
讓我們看看這個庫的幾種可能用法:
1· 圖像存儲
PIL 設計用於圖像歸檔和圖像批量處理,你可以使用它建立縮略圖,轉換格式,打印圖片等等。現在的版本可以驗證和讀取大量的圖片格式。寫入有意設計為隻能寫入常用的文件格式。
2·圖像顯示 現在的版本包含瞭 Tk PhotoImage 和 BitmapImage 接口, 以及 Windows DIB interface,這有助於在 Windows 下使用。為瞭方便測試,還提供瞭 show() 方法,可以保存圖像到磁盤並顯示。
3·圖像處理 這個庫包含瞭基本的圖像處理功能,包括點操作,使用內置卷積內核過濾,色彩空間轉換。這個庫還支持更改圖像大小、旋轉、自由變換。有一個直方圖方法允許你統計圖像,這可以用於對比度增強和全局統計分析。
小面我貼一下文檔的一些入門介紹:
貼文檔做翻譯的事情我就不做瞭大傢可以自己去看看。
文檔鏈接:傳送門
總結
到此這篇關於使用Python批量縮放圖片的文章就介紹到這瞭,更多相關Python批量縮放圖片內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python實現圖片批量壓縮
- python pillow庫的基礎使用教程
- 基於python使用Pillow做動態圖在圖中生成二維碼以及圖像處理
- python之pil的使用詳解
- 如何利用python寫GUI及生成.exe可執行文件