欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python實(shí)現(xiàn)批量縮放圖片(視頻)尺寸

 更新時(shí)間:2023年03月24日 09:49:46   作者:像風(fēng)一樣的男人@  
這篇文章主要為大家詳細(xì)介紹了如何通過Python語言實(shí)現(xiàn)批量縮放圖片(視頻)尺寸的功能,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起了解一下

方法一

在 Pillow 中,resize() 方法會(huì)強(qiáng)制將圖片縮放到指定的大小,可能會(huì)導(dǎo)致圖片變形或失真;而 thumbnail() 方法則會(huì)按比例縮小圖片,同時(shí)保持原始寬高比,不會(huì)變形或失真。

具體來說,thumbnail() 方法會(huì)根據(jù)指定的最大寬度和高度,計(jì)算出合適的縮放比例,然后將圖片按照該比例縮小,最終得到的圖片寬度和高度都不會(huì)超過指定的大小。而 resize() 方法則直接將圖片強(qiáng)制縮放到指定的大小,如果指定的大小與原始圖片寬高比不同,則會(huì)變形或失真。

因此,如果要保持圖片原始寬高比并縮小圖片,建議使用 thumbnail() 方法;如果需要將圖片強(qiáng)制縮放到指定大小,可以使用 resize() 方法,但要注意可能會(huì)導(dǎo)致失真或變形。

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))

# 調(diào)用示例
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)
	
	# 調(diào)用示例
input_path = 'input.jpg'
output_path = 'output.jpg'
size = 640 # 寬度或高度為 640
resize_image(input_path, output_path, size)

在這個(gè)示例代碼中,resize_image 函數(shù)接收三個(gè)參數(shù):輸入文件路徑 input_path、輸出文件路徑 output_path,以及目標(biāo)大小 size。在函數(shù)內(nèi)部,首先用 cv2.imread 函數(shù)讀取輸入文件,并使用 shape 屬性獲取圖片的寬度和高度。然后根據(jù)寬度和高度的大小關(guān)系,計(jì)算出縮放比例。最后使用 cv2.resize 函數(shù)將圖片縮放到指定大小,并使用 cv2.imwrite 函數(shù)將縮放后的圖片保存到輸出文件。

需要注意的是,使用 OpenCV 庫可能需要先安裝相關(guān)依賴,具體安裝方法可以查閱相關(guān)文檔。另外,使用 OpenCV 庫縮放圖片時(shí),要注意保持寬高比,避免變形或失真。具體來說,可以根據(jù)圖片的寬高比,計(jì)算出縮放比例并將圖片縮小到合適的尺寸。

方法三

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)

# 調(diào)用示例
input_path = 'input.jpg'
output_path = 'output.jpg'
max_size = 640 # 最大邊長(zhǎng)為 640
resize_image(input_path, output_path, max_size)

在這個(gè)示例代碼中,resize_image 函數(shù)接收三個(gè)參數(shù):輸入文件路徑 input_path、輸出文件路徑 output_path,以及最大邊長(zhǎng) max_size。在函數(shù)內(nèi)部,首先使用 Image.open 函數(shù)讀取輸入文件,并使用 size 屬性獲取圖片的寬度和高度。然后根據(jù)最大邊長(zhǎng)和圖片大小的關(guān)系,計(jì)算出縮放比例。最后使用 resize 函數(shù)將圖片縮放到指定大小,并使用 save 函數(shù)將縮放后的圖片保存到輸出文件。

需要注意的是,使用 Pillow 庫的 resize 方法時(shí),也要注意保持圖片的寬高比,避免變形或失真。具體來說,可以根據(jù)圖片的寬高比,計(jì)算出縮放比例并將圖片縮小到合適的尺寸。

方法四(FFmpeg)

使用 ffmpeg 縮放視頻尺寸的命令格式如下:

ffmpeg -i input.mp4 -vf scale=: output.mp4

其中,和 分別代表縮放后的視頻寬度和高度,可以指定為具體的像素值,也可以使用百分比,如 50%。

例如,將一個(gè)輸入視頻文件 input.mp4 縮放為寬度為 640 像素,高度為 360 像素的輸出視頻文件 output.mp4,可以使用以下命令:

ffmpeg -i input.mp4 -vf scale=640:360 output.mp4

如果希望按照原始視頻寬高比自動(dòng)縮放,可以只指定寬度或高度,并保留原始視頻寬高比:

# 指定寬度為 640 像素,高度按原始比例縮放
ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4

# 指定高度為 360 像素,寬度按原始比例縮放
ffmpeg -i input.mp4 -vf scale=-1:360 output.mp4

還可以通過在 scale 參數(shù)前添加 force_original_aspect_ratio 選項(xiàng),讓 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

到此這篇關(guān)于基于Python實(shí)現(xiàn)批量縮放圖片(視頻)尺寸的文章就介紹到這了,更多相關(guān)Python縮放圖片尺寸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 查看python安裝路徑及pip安裝的包列表及路徑

    查看python安裝路徑及pip安裝的包列表及路徑

    這篇文章主要介紹了查看python安裝路徑及pip安裝的包列表及路徑,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • python數(shù)據(jù)處理實(shí)戰(zhàn)(必看篇)

    python數(shù)據(jù)處理實(shí)戰(zhàn)(必看篇)

    下面小編就為大家?guī)硪黄猵ython數(shù)據(jù)處理實(shí)戰(zhàn)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • python爬蟲工具例舉說明

    python爬蟲工具例舉說明

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲工具例舉說明內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-11-11
  • Python面向?qū)ο箢惥帉懠?xì)節(jié)分析【類,方法,繼承,超類,接口等】

    Python面向?qū)ο箢惥帉懠?xì)節(jié)分析【類,方法,繼承,超類,接口等】

    這篇文章主要介紹了Python面向?qū)ο箢惥帉懠?xì)節(jié),較為詳細(xì)的分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類,方法,繼承,超類,接口等相關(guān)概念、使用技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • Python 切分?jǐn)?shù)組實(shí)例解析

    Python 切分?jǐn)?shù)組實(shí)例解析

    這篇文章主要介紹了Python 切分?jǐn)?shù)組實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • matplotlib階梯圖的實(shí)現(xiàn)(step())

    matplotlib階梯圖的實(shí)現(xiàn)(step())

    這篇文章主要介紹了matplotlib階梯圖的實(shí)現(xiàn)(step()),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • ?Python使用Mediapipe對(duì)圖像進(jìn)行手部地標(biāo)檢測(cè)

    ?Python使用Mediapipe對(duì)圖像進(jìn)行手部地標(biāo)檢測(cè)

    本文將以深度庫即Mediapipe為基礎(chǔ)庫,以及其他計(jì)算機(jī)視覺預(yù)處理的CV2庫來制作手部地標(biāo)檢測(cè)模型,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-03-03
  • python -m pip install 和 pip install 的區(qū)別解析

    python -m pip install 和 pip in

    python -m pip install <package> 使用了 -m 參數(shù)來確保以 Python 模塊的形式運(yùn)行 pip,適用于確保在不同的環(huán)境中正確使用 pip,這篇文章主要介紹了python -m pip install 和 pip install 的區(qū)別,需要的朋友可以參考下
    2023-07-07
  • Python中pytest的參數(shù)化實(shí)例解析

    Python中pytest的參數(shù)化實(shí)例解析

    這篇文章主要介紹了Python中pytest的參數(shù)化實(shí)例解析,pytest是一個(gè)非常成熟的全功能的Python測(cè)試框架,主要有簡(jiǎn)單靈活,容易上手,支持參數(shù)化等特點(diǎn),需要的朋友可以參考下
    2023-07-07
  • Python 3.6 性能測(cè)試框架Locust安裝及使用方法(詳解)

    Python 3.6 性能測(cè)試框架Locust安裝及使用方法(詳解)

    下面小編就為大家?guī)硪黄狿ython 3.6 性能測(cè)試框架Locust安裝及使用方法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10

最新評(píng)論