Python批量裁剪圖片的思路詳解
需求
我的需求是批量裁剪某一文件夾下的所有圖片,并指定裁剪寬高。
思路
1、 先使用PIL.Image.size獲取輸入圖片的寬高。
2、寬高除以2得到中心點(diǎn)坐標(biāo)
3、根據(jù)指定寬高,以中心點(diǎn)向四周拓展
4、調(diào)用PIL.Image.crop完成裁剪
程序
import os
from PIL import Image
def crop(input_img_path, output_img_path, crop_w, crop_h):
image = Image.open(input_img_path)
x_max = image.size[0]
y_max = image.size[1]
mid_point_x = int(x_max / 2)
mid_point_y = int(y_max / 2)
right = mid_point_x + int(crop_w / 2)
left = mid_point_x - int(crop_w / 2)
down = mid_point_y + int(crop_h / 2)
up = mid_point_y - int(crop_h / 2)
BOX_LEFT, BOX_UP, BOX_RIGHT, BOX_DOWN = left, up, right, down
box = (BOX_LEFT, BOX_UP, BOX_RIGHT, BOX_DOWN)
crop_img = image.crop(box)
crop_img.save(output_img_path)
if __name__ == '__main__':
dataset_dir = "cut" # 圖片路徑
output_dir = 'out' # 輸出路徑
crop_w = 300 # 裁剪圖片寬
crop_h = 300 # 裁剪圖片高
# 獲得需要轉(zhuǎn)化的圖片路徑并生成目標(biāo)路徑
image_filenames = [(os.path.join(dataset_dir, x), os.path.join(output_dir, x))
for x in os.listdir(dataset_dir)]
# 轉(zhuǎn)化所有圖片
for path in image_filenames:
crop(path[0], path[1], crop_w, crop_h)測(cè)試
裁剪前:

裁剪后:

到此這篇關(guān)于Python批量裁剪圖片小腳本的文章就介紹到這了,更多相關(guān)Python批量裁剪內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch實(shí)現(xiàn)好萊塢明星識(shí)別的示例代碼
本文主要介紹了pytorch實(shí)現(xiàn)好萊塢明星識(shí)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
VSCode搭建Django開(kāi)發(fā)環(huán)境的圖文步驟
本篇介紹在vscode環(huán)境下搭建Django開(kāi)發(fā)環(huán)境的詳細(xì)步驟,包括Python、Django、VSCode等,以及它們的安裝和配置方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
numpy 進(jìn)行數(shù)組拼接,分別在行和列上合并的實(shí)例
今天小編就為大家分享一篇numpy 進(jìn)行數(shù)組拼接,分別在行和列上合并的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python如何獲取當(dāng)前路徑并列出當(dāng)前路徑下的所有文件
這篇文章主要介紹了Python如何獲取當(dāng)前路徑并列出當(dāng)前路徑下的所有文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
使用Python實(shí)現(xiàn)文件重命名的三種方法
在處理數(shù)據(jù)集中,我們經(jīng)常需要對(duì)文件進(jìn)行重命名操作,這篇文章小編為大家總結(jié)了幾種文件重命名的方法,可以大家一鍵重命名,有需要的可以了解下2025-02-02
python實(shí)現(xiàn)簡(jiǎn)單石頭剪刀布游戲
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單石頭剪刀布游戲,相信大家在童年或者生活中都玩過(guò)石頭剪刀布這個(gè)游戲,這個(gè)游戲需要兩個(gè)及以上的人。而今天,網(wǎng)上也實(shí)現(xiàn)了石頭剪刀布的游戲。通過(guò)初步學(xué)習(xí)python,也學(xué)會(huì)了如何編寫(xiě)這個(gè)游戲。下面一起來(lái)看看詳細(xì)內(nèi)容吧2021-10-10
Python動(dòng)態(tài)生成多維數(shù)組的方法示例
這篇文章主要介紹了Python動(dòng)態(tài)生成多維數(shù)組的方法,涉及Python數(shù)組動(dòng)態(tài)遍歷、添加、打印等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
Python SSL證書(shū)驗(yàn)證問(wèn)題解決方案
這篇文章主要介紹了Python SSL證書(shū)驗(yàn)證問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
用python實(shí)現(xiàn)九九乘法表實(shí)例
大家好,本篇文章主要講的是用python實(shí)現(xiàn)九九乘法表實(shí)例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01

