本篇內(nèi)容介紹了“怎么使用Python批量縮放圖片尺寸”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)長(zhǎng)期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為龍圩企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,龍圩網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
在 Pillow 中,resize() 方法會(huì)強(qiáng)制將圖片縮放到指定的大小,可能會(huì)導(dǎo)致圖片變形或失真;而 thumbnail() 方法則會(huì)按比例縮小圖片,同時(shí)保持原始寬高比,不會(huì)變形或失真。
具體來(lái)說(shuō),thumbnail() 方法會(huì)根據(jù)指定的最大寬度和高度,計(jì)算出合適的縮放比例,然后將圖片按照該比例縮小,最終得到的圖片寬度和高度都不會(huì)超過(guò)指定的大小。而 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 庫(kù)可能需要先安裝相關(guān)依賴,具體安裝方法可以查閱相關(guān)文檔。另外,使用 OpenCV 庫(kù)縮放圖片時(shí),要注意保持寬高比,避免變形或失真。具體來(lái)說(shuō),可以根據(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 庫(kù)的 resize 方法時(shí),也要注意保持圖片的寬高比,避免變形或失真。具體來(lái)說(shuō),可以根據(jù)圖片的寬高比,計(jì)算出縮放比例并將圖片縮小到合適的尺寸。
使用 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
還可以通過(guò)在 scale 參數(shù)前添加 force_original_aspect_ratio 選項(xiàng),讓 ffmpeg 在縮放過(guò)程中保留原始視頻寬高比,以免變形:
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批量縮放圖片尺寸”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
當(dāng)前題目:怎么使用Python批量縮放圖片尺寸
本文路徑:http://aaarwkj.com/article14/goohge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、、動(dòng)態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、網(wǎng)頁(yè)設(shè)計(jì)公司、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)