Python图像处理之给图片添加圆角效果的完整代码

 更新时间:2025年03月06日 09:57:35   作者:蜡笔小新星  
在日常的图像处理任务中,我们经常需要对图片进行一些美化和调整,今天,我将向大家介绍一个使用Python编程语言,结合PIL(Python Imaging Library)库,给图片添加圆角效果的方法,需要的朋友可以参考下

代码解析

首先,我们需要导入PIL库中的ImageImageDraw模块。这两个模块提供了丰富的图像处理功能。

from PIL import Image, ImageDraw

接下来,我们定义一个名为round_corners的函数,该函数接受三个参数:image_path(输入图片的路径)、output_path(输出图片的路径)和radius(圆角的半径)。

def round_corners(image_path, output_path, radius):

在函数内部,我们首先使用Image.open方法打开图片,并将其转换为"RGBA"模式,以便进行透明处理。

    image = Image.open(image_path).convert("RGBA")

然后,我们创建一个与原图相同大小的空白图像作为遮罩,这个遮罩将用于实现圆角效果。

    mask = Image.new("RGBA", image.size, (0, 0, 0, 0))

接下来,我们使用ImageDraw.Draw创建一个画笔对象,并在遮罩上绘制一个圆角矩形。圆角矩形的填充颜色设置为白色(RGB值为(255, 255, 255))。

    draw = ImageDraw.Draw(mask)
    draw.rounded_rectangle((0, 0, image.width, image.height), radius, fill=(255, 255, 255))

现在,我们创建一个新的图像对象result,其大小与原图相同,并设置为"RGBA"模式。

    result = Image.new("RGBA", image.size)

使用paste方法,我们将原图粘贴到新图像上,并使用之前创建的遮罩来实现圆角效果。

    result.paste(image, mask=mask)

最后,我们使用save方法将处理后的图片保存到指定的输出路径。

    result.save(output_path)

使用示例

下面是一个使用round_corners函数的示例。我们假设有一张名为20250306.png的图片,并希望将其圆角半径设置为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):
    # 打开图片,并转换为RGBA模式,以支持透明背景
    image = Image.open(image_path).convert("RGBA")
    
    # 创建一个与原图相同大小的空白图像作为蒙版
    mask = Image.new("RGBA", image.size, (0, 0, 0, 0))
    
    # 创建一个画笔对象,用于在蒙版上绘制图形
    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))
    
    # 创建一个新的图像对象,大小与原图相同,模式为RGBA
    result = Image.new("RGBA", image.size)
    
    # 将原图粘贴到新图像上,使用蒙版进行遮罩,只保留圆角矩形内的部分
    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)            # 调用函数,设置圆角半径为300

实践操作

你可以按照上面的示例代码,将源图片路径和输出图片路径替换为你自己的文件路径,并调整圆角半径的值来达到你想要的效果。运行代码后,你将在指定路径下找到处理后的圆角图片。

结论

通过本文的教程,我们学会了如何使用Python编程语言结合PIL库给图片添加圆角效果。这个方法不仅简单易行,而且效果显著。在实际应用中,我们可以根据需要调整圆角半径的大小,以达到不同的视觉效果。无论是美化图片还是进行图像处理项目,这个方法都是一个非常实用的工具。希望这篇文章对你有所帮助!

以上就是Python图像处理之给图片添加圆角效果的完整代码的详细内容,更多关于Python图片添加圆角的资料请关注脚本之家其它相关文章!

相关文章

  • OpenCV-Python实现油画效果的实例

    OpenCV-Python实现油画效果的实例

    OpenCV是功能强大的计算机视觉库,本文主要使用OpenCV来实现图片的油画效果,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • 利用PyTorch实现VGG16教程

    利用PyTorch实现VGG16教程

    这篇文章主要介绍了利用PyTorch实现VGG16教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python编程scoketServer实现多线程同步实例代码

    Python编程scoketServer实现多线程同步实例代码

    这篇文章主要介绍了Python编程scoketServer实现多线程同步实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 使用Python和大模型进行数据分析和文本生成

    使用Python和大模型进行数据分析和文本生成

    Python语言以其简洁和强大的特性,成为了数据科学、机器学习和人工智能开发的首选语言之一,在这篇文章中,我将介绍如何用Python连接和使用大模型,并通过示例展示如何在实际项目中应用这些技术,需要的朋友可以参考下
    2024-05-05
  • 向量化操作改进数据分析工作流的Pandas Numpy示例分析

    向量化操作改进数据分析工作流的Pandas Numpy示例分析

    这篇文章主要介绍了向量化操作改进数据分析工作流的Pandas Numpy示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 浅析Python中作用域的应用

    浅析Python中作用域的应用

    这篇文章主要是想和大家一起来讨论下去Python中的命名空间、作用域和LEGB规则等不同概念,文中的示例代码简洁易懂,快跟随小编一起来学习一下吧
    2023-08-08
  • Python pyinotify模块实现对文档的实时监控功能方法

    Python pyinotify模块实现对文档的实时监控功能方法

    今天小编就为大家分享一篇Python pyinotify模块实现对文档的实时监控功能方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 浅谈python3发送post请求参数为空的情况

    浅谈python3发送post请求参数为空的情况

    今天小编就为大家分享一篇浅谈python3发送post请求参数为空的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 布同 统计英文单词的个数的python代码

    布同 统计英文单词的个数的python代码

    最近需要翻译英文文章,所以需要统计单词个数。索性写了一段代码在此,可以简单的统计单词的个数
    2011-03-03
  • pytorch模型保存到本地后,如何实现继续训练

    pytorch模型保存到本地后,如何实现继续训练

    在PyTorch中,保存和加载模型对于实现模型训练的中断和恢复非常有用,保存模型主要有两种方式:一是保存整个模型包括结构与参数;二是仅保存模型的state_dict,加载模型时,若保存了整个模型则直接加载,若仅保存了state_dict,则需先实例化模型结构后加载
    2024-09-09

最新评论