中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Python如何實現批量縮放圖片尺寸

發布時間:2023-03-24 10:54:15 來源:億速云 閱讀:122 作者:iii 欄目:開發技術

今天小編給大家分享一下基于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 縮放視頻尺寸的命令格式如下:

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如何實現批量縮放圖片尺寸”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东乌珠穆沁旗| 江都市| 哈巴河县| 万荣县| 黑河市| 鹿泉市| 图木舒克市| 绵竹市| 南阳市| 都兰县| 海口市| 台北县| 含山县| 柞水县| 邢台市| 孝感市| 佛坪县| 称多县| 辽宁省| 准格尔旗| 枝江市| 尼木县| 盐津县| 台东县| 包头市| 于田县| 曲松县| 宁乡县| 东至县| 长海县| 恭城| 泰安市| 且末县| 长丰县| 涿鹿县| 乌鲁木齐市| 边坝县| 讷河市| 嘉义市| 宝山区| 峡江县|