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

