Python圖像處理之給圖片添加圓角效果的完整代碼
代碼解析
首先,我們需要導(dǎo)入PIL庫(kù)中的Image
和ImageDraw
模塊。這兩個(gè)模塊提供了豐富的圖像處理功能。
from PIL import Image, ImageDraw
接下來(lái),我們定義一個(gè)名為round_corners
的函數(shù),該函數(shù)接受三個(gè)參數(shù):image_path
(輸入圖片的路徑)、output_path
(輸出圖片的路徑)和radius
(圓角的半徑)。
def round_corners(image_path, output_path, radius):
在函數(shù)內(nèi)部,我們首先使用Image.open
方法打開(kāi)圖片,并將其轉(zhuǎn)換為"RGBA"模式,以便進(jìn)行透明處理。
image = Image.open(image_path).convert("RGBA")
然后,我們創(chuàng)建一個(gè)與原圖相同大小的空白圖像作為遮罩,這個(gè)遮罩將用于實(shí)現(xiàn)圓角效果。
mask = Image.new("RGBA", image.size, (0, 0, 0, 0))
接下來(lái),我們使用ImageDraw.Draw
創(chuàng)建一個(gè)畫(huà)筆對(duì)象,并在遮罩上繪制一個(gè)圓角矩形。圓角矩形的填充顏色設(shè)置為白色(RGB值為(255, 255, 255))。
draw = ImageDraw.Draw(mask) draw.rounded_rectangle((0, 0, image.width, image.height), radius, fill=(255, 255, 255))
現(xiàn)在,我們創(chuàng)建一個(gè)新的圖像對(duì)象result
,其大小與原圖相同,并設(shè)置為"RGBA"模式。
result = Image.new("RGBA", image.size)
使用paste
方法,我們將原圖粘貼到新圖像上,并使用之前創(chuàng)建的遮罩來(lái)實(shí)現(xiàn)圓角效果。
result.paste(image, mask=mask)
最后,我們使用save
方法將處理后的圖片保存到指定的輸出路徑。
result.save(output_path)
使用示例
下面是一個(gè)使用round_corners
函數(shù)的示例。我們假設(shè)有一張名為20250306.png
的圖片,并希望將其圓角半徑設(shè)置為300像素,處理后的圖片保存為20250306_output.png
。
source_img = r'D:\test_pic\20250306.png' output_img = r'D:\test_pic\20250306_output.png' round_corners(source_img, output_img, 300)
完整示例
from PIL import Image, ImageDraw def round_corners(image_path, output_path, radius): # 打開(kāi)圖片,并轉(zhuǎn)換為RGBA模式,以支持透明背景 image = Image.open(image_path).convert("RGBA") # 創(chuàng)建一個(gè)與原圖相同大小的空白圖像作為蒙版 mask = Image.new("RGBA", image.size, (0, 0, 0, 0)) # 創(chuàng)建一個(gè)畫(huà)筆對(duì)象,用于在蒙版上繪制圖形 draw = ImageDraw.Draw(mask) # 在蒙版上繪制圓角矩形,圓角半徑為radius,填充顏色為白色(RGBA模式下為(255, 255, 255, 255)) draw.rounded_rectangle((0, 0, image.width, image.height), radius, fill=(255, 255, 255, 255)) # 創(chuàng)建一個(gè)新的圖像對(duì)象,大小與原圖相同,模式為RGBA result = Image.new("RGBA", image.size) # 將原圖粘貼到新圖像上,使用蒙版進(jìn)行遮罩,只保留圓角矩形內(nèi)的部分 result.paste(image, mask=mask) # 保存處理后的圖像到指定路徑 result.save(output_path) # 示例用法 source_img = r'D:\test_pic\20250306.png' # 源圖片路徑 output_img = r'D:\test_pic\20250306_output.png' # 輸出圖片路徑 round_corners(source_img, output_img, 300) # 調(diào)用函數(shù),設(shè)置圓角半徑為300
實(shí)踐操作
你可以按照上面的示例代碼,將源圖片路徑和輸出圖片路徑替換為你自己的文件路徑,并調(diào)整圓角半徑的值來(lái)達(dá)到你想要的效果。運(yùn)行代碼后,你將在指定路徑下找到處理后的圓角圖片。
結(jié)論
通過(guò)本文的教程,我們學(xué)會(huì)了如何使用Python編程語(yǔ)言結(jié)合PIL庫(kù)給圖片添加圓角效果。這個(gè)方法不僅簡(jiǎn)單易行,而且效果顯著。在實(shí)際應(yīng)用中,我們可以根據(jù)需要調(diào)整圓角半徑的大小,以達(dá)到不同的視覺(jué)效果。無(wú)論是美化圖片還是進(jìn)行圖像處理項(xiàng)目,這個(gè)方法都是一個(gè)非常實(shí)用的工具。希望這篇文章對(duì)你有所幫助!
以上就是Python圖像處理之給圖片添加圓角效果的完整代碼的詳細(xì)內(nèi)容,更多關(guān)于Python圖片添加圓角的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
OpenCV-Python實(shí)現(xiàn)油畫(huà)效果的實(shí)例
OpenCV是功能強(qiáng)大的計(jì)算機(jī)視覺(jué)庫(kù),本文主要使用OpenCV來(lái)實(shí)現(xiàn)圖片的油畫(huà)效果,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06Python編程scoketServer實(shí)現(xiàn)多線程同步實(shí)例代碼
這篇文章主要介紹了Python編程scoketServer實(shí)現(xiàn)多線程同步實(shí)例代碼,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01使用Python和大模型進(jìn)行數(shù)據(jù)分析和文本生成
Python語(yǔ)言以其簡(jiǎn)潔和強(qiáng)大的特性,成為了數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和人工智能開(kāi)發(fā)的首選語(yǔ)言之一,在這篇文章中,我將介紹如何用Python連接和使用大模型,并通過(guò)示例展示如何在實(shí)際項(xiàng)目中應(yīng)用這些技術(shù),需要的朋友可以參考下2024-05-05向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析
這篇文章主要介紹了向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Python pyinotify模塊實(shí)現(xiàn)對(duì)文檔的實(shí)時(shí)監(jiān)控功能方法
今天小編就為大家分享一篇Python pyinotify模塊實(shí)現(xiàn)對(duì)文檔的實(shí)時(shí)監(jiān)控功能方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10淺談python3發(fā)送post請(qǐng)求參數(shù)為空的情況
今天小編就為大家分享一篇淺談python3發(fā)送post請(qǐng)求參數(shù)為空的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12布同 統(tǒng)計(jì)英文單詞的個(gè)數(shù)的python代碼
最近需要翻譯英文文章,所以需要統(tǒng)計(jì)單詞個(gè)數(shù)。索性寫(xiě)了一段代碼在此,可以簡(jiǎn)單的統(tǒng)計(jì)單詞的個(gè)數(shù)2011-03-03pytorch模型保存到本地后,如何實(shí)現(xiàn)繼續(xù)訓(xùn)練
在PyTorch中,保存和加載模型對(duì)于實(shí)現(xiàn)模型訓(xùn)練的中斷和恢復(fù)非常有用,保存模型主要有兩種方式:一是保存整個(gè)模型包括結(jié)構(gòu)與參數(shù);二是僅保存模型的state_dict,加載模型時(shí),若保存了整個(gè)模型則直接加載,若僅保存了state_dict,則需先實(shí)例化模型結(jié)構(gòu)后加載2024-09-09