最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

方法一

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

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

因此,如果要保持圖片原始寬高比并縮小圖片,建議使用 thumbnail() 方法;如果需要將圖片強(qiáng)制縮放到指定大小,可以使用 resize() 方法,但要注意可能會導(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 # 最大邊長為 640
resize_image(input_path, output_path, max_size)

在這個(gè)示例代碼中,resize_image 函數(shù)接收三個(gè)參數(shù):輸入文件路徑 input_path、輸出文件路徑 output_path,以及最大邊長 max_size。在函數(shù)內(nèi)部,首先使用 Image.open 函數(shù)讀取輸入文件,并使用 size 屬性獲取圖片的寬度和高度。然后根據(jù)最大邊長和圖片大小的關(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

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

# 指定寬度為 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • bluepy 一款python封裝的BLE利器簡單介紹

    bluepy 一款python封裝的BLE利器簡單介紹

    這篇文章主要介紹了bluepy 一款python封裝的BLE利器簡單介紹,bluepy 是github上一個(gè)很好的藍(lán)牙開源項(xiàng)目, 其主要功能是用python實(shí)現(xiàn)linux上BLE的接口。,需要的朋友可以參考下
    2019-06-06
  • Python 中 Shutil 模塊詳情

    Python 中 Shutil 模塊詳情

    這篇文章主要介紹了 Python 中 Shutil 模塊,shutil可以簡單地理解為sh + util,shell工具的意思。shutil模塊是對os模塊的補(bǔ)充,主要針對文件的拷貝、刪除、移動、壓縮和解壓操作。下面來看文章詳細(xì)內(nèi)容
    2021-11-11
  • 一文向您詳細(xì)介紹指令 python -m pip install的用法和功能

    一文向您詳細(xì)介紹指令 python -m pip install的用法和功能

    通過本文的介紹,我們詳細(xì)了解了python -m pip install命令的用法和功能,從基本用法到安裝特定版本的包、從其他源安裝包、升級和卸載包,再到使用requirements.txt管理依賴,我們逐步深入了解了pip的強(qiáng)大功能,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Python實(shí)現(xiàn)二分法查找及優(yōu)化的示例詳解

    Python實(shí)現(xiàn)二分法查找及優(yōu)化的示例詳解

    二分查找法(Binary?Search)是一種在有序數(shù)組中查找某一特定元素的算法,在本文中,我們將使用?Python?實(shí)現(xiàn)二分查找算法,并深入探討算法的原理和實(shí)現(xiàn)細(xì)節(jié),感興趣的可以了解一下
    2023-04-04
  • 解決在Python編輯器pycharm中程序run正常debug錯(cuò)誤的問題

    解決在Python編輯器pycharm中程序run正常debug錯(cuò)誤的問題

    今天小編就為大家分享一篇解決在Python編輯器pycharm中程序run正常debug錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python代碼打開本地.mp4格式文件的方法

    Python代碼打開本地.mp4格式文件的方法

    今天小編就為大家分享一篇Python代碼打開本地.mp4格式文件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Django瀑布流的實(shí)現(xiàn)示例

    Django瀑布流的實(shí)現(xiàn)示例

    在瀏覽一些網(wǎng)站時(shí),經(jīng)常會看到類似于這種滿屏都是圖片,本文主要介紹了Django瀑布流的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-03-03
  • Python如何用NumPy讀取和保存點(diǎn)云數(shù)據(jù)

    Python如何用NumPy讀取和保存點(diǎn)云數(shù)據(jù)

    這篇文章主要介紹了Python如何用NumPy讀取和保存點(diǎn)云數(shù)據(jù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Python爬取12306車次信息代碼詳解

    Python爬取12306車次信息代碼詳解

    這篇文章主要介紹了Python爬取12306車次信息代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python實(shí)現(xiàn)的列表排序、反轉(zhuǎn)操作示例

    Python實(shí)現(xiàn)的列表排序、反轉(zhuǎn)操作示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的列表排序、反轉(zhuǎn)操作,結(jié)合實(shí)例形式分析了Python針對列表的sort排序、以及基于reverse、切片的反轉(zhuǎn)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03

最新評論

海盐县| 吴桥县| 苏州市| 永兴县| 康保县| 嫩江县| 镇雄县| 乌审旗| 吉水县| 彭州市| 工布江达县| 云林县| 泗洪县| 安阳县| 江西省| 张家港市| 深水埗区| 永寿县| 儋州市| 高密市| 长乐市| 广德县| 方山县| 遵义县| 张家港市| 武川县| 台中县| 贵德县| 习水县| 木兰县| 石泉县| 额济纳旗| 礼泉县| 德清县| 贵州省| 晋中市| 哈尔滨市| 澄迈县| 大埔区| 阜宁县| 南充市|