您好,登錄后才能下訂單哦!
今天小編給大家分享一下基于Python如何實現批量縮放圖片尺寸的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
在 Pillow 中,resize() 方法會強制將圖片縮放到指定的大小,可能會導致圖片變形或失真;而 thumbnail() 方法則會按比例縮小圖片,同時保持原始寬高比,不會變形或失真。
具體來說,thumbnail() 方法會根據指定的最大寬度和高度,計算出合適的縮放比例,然后將圖片按照該比例縮小,最終得到的圖片寬度和高度都不會超過指定的大小。而 resize() 方法則直接將圖片強制縮放到指定的大小,如果指定的大小與原始圖片寬高比不同,則會變形或失真。
因此,如果要保持圖片原始寬高比并縮小圖片,建議使用 thumbnail() 方法;如果需要將圖片強制縮放到指定大小,可以使用 resize() 方法,但要注意可能會導致失真或變形。
from PIL import Image import os dir = r'C:\Users\1\Desktop\ffmpeg\bin\final_results' out = r'C:\Users\1\Desktop\ffmpeg\bin\results' def resize_image(): for path in os.listdir(dir): img = os.path.join(dir, path) print(f'縮放圖:【{img}】') with Image.open(img) as img: img.thumbnail((1280, 720)) img.save(os.path.join(out, path)) # 調用示例 resize_image()
import cv2 def resize_image(input_path, output_path, size): img = cv2.imread(input_path) height, width, _ = img.shape if width > height: scale = size / width else: scale = size / height img = cv2.resize(img, (int(width * scale), int(height * scale))) cv2.imwrite(output_path, img) # 調用示例 input_path = 'input.jpg' output_path = 'output.jpg' size = 640 # 寬度或高度為 640 resize_image(input_path, output_path, size)
在這個示例代碼中,resize_image 函數接收三個參數:輸入文件路徑 input_path、輸出文件路徑 output_path,以及目標大小 size。在函數內部,首先用 cv2.imread 函數讀取輸入文件,并使用 shape 屬性獲取圖片的寬度和高度。然后根據寬度和高度的大小關系,計算出縮放比例。最后使用 cv2.resize 函數將圖片縮放到指定大小,并使用 cv2.imwrite 函數將縮放后的圖片保存到輸出文件。
需要注意的是,使用 OpenCV 庫可能需要先安裝相關依賴,具體安裝方法可以查閱相關文檔。另外,使用 OpenCV 庫縮放圖片時,要注意保持寬高比,避免變形或失真。具體來說,可以根據圖片的寬高比,計算出縮放比例并將圖片縮小到合適的尺寸。
from PIL import Image def resize_image(input_path, output_path, max_size): img = Image.open(input_path) width, height = img.size if max(width, height) > max_size: if width > height: new_width = max_size new_height = int(height * (max_size / width)) else: new_width = int(width * (max_size / height)) new_height = max_size img = img.resize((new_width, new_height)) img.save(output_path) # 調用示例 input_path = 'input.jpg' output_path = 'output.jpg' max_size = 640 # 最大邊長為 640 resize_image(input_path, output_path, max_size)
在這個示例代碼中,resize_image 函數接收三個參數:輸入文件路徑 input_path、輸出文件路徑 output_path,以及最大邊長 max_size。在函數內部,首先使用 Image.open 函數讀取輸入文件,并使用 size 屬性獲取圖片的寬度和高度。然后根據最大邊長和圖片大小的關系,計算出縮放比例。最后使用 resize 函數將圖片縮放到指定大小,并使用 save 函數將縮放后的圖片保存到輸出文件。
需要注意的是,使用 Pillow 庫的 resize 方法時,也要注意保持圖片的寬高比,避免變形或失真。具體來說,可以根據圖片的寬高比,計算出縮放比例并將圖片縮小到合適的尺寸。
使用 ffmpeg 縮放視頻尺寸的命令格式如下:
ffmpeg -i input.mp4 -vf scale=: output.mp4
其中,和 分別代表縮放后的視頻寬度和高度,可以指定為具體的像素值,也可以使用百分比,如 50%。
例如,將一個輸入視頻文件 input.mp4 縮放為寬度為 640 像素,高度為 360 像素的輸出視頻文件 output.mp4,可以使用以下命令:
ffmpeg -i input.mp4 -vf scale=640:360 output.mp4
如果希望按照原始視頻寬高比自動縮放,可以只指定寬度或高度,并保留原始視頻寬高比:
# 指定寬度為 640 像素,高度按原始比例縮放 ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4 # 指定高度為 360 像素,寬度按原始比例縮放 ffmpeg -i input.mp4 -vf scale=-1:360 output.mp4
還可以通過在 scale 參數前添加 force_original_aspect_ratio 選項,讓 ffmpeg 在縮放過程中保留原始視頻寬高比,以免變形:
ffmpeg -i input.mp4 -vf "scale=640:360:force_original_aspect_ratio=decrease,pad=640:360:(ow-iw)/2:(oh-ih)/2" output.mp4
以上就是“基于Python如何實現批量縮放圖片尺寸”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。