如何截取图片的圆形区域

在图像处理和设计中,截取图片的圆形区域是一项常见的操作,尤其是在头像裁剪、图标设计或其他需要圆形图片的场景中。本文将介绍几种常见的方法来实现图片的圆形区域截取,包括使用图像处理工具和编程语言。


一、使用图像处理工具

1. Photoshop
  • 打开图片后,选择椭圆选框工具(快捷键:M,然后右键选择椭圆选框工具)。
  • 按住 Shift 键拖动鼠标,绘制一个正圆选区。
  • 调整选区位置后,右键选择“通过拷贝的图层”。
  • 隐藏原始图层,导出图片为 PNG 格式(以保留透明背景)。
2. 在线工具
  • 许多在线工具(如 Canva、Fotor)提供了圆形裁剪功能。
  • 上传图片后,选择裁剪工具,切换到圆形模式,调整裁剪区域并导出。

二、使用编程语言实现

1. Python(Pillow 库)

Python 提供了强大的图像处理库 Pillow,可以轻松实现圆形裁剪。

from PIL import Image, ImageDraw

# 打开图片
image = Image.open("example.jpg").convert("RGBA")

# 创建一个与图片大小相同的透明背景
size = image.size
mask = Image.new("L", size, 0)

# 绘制圆形遮罩
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0, size[0], size[1]), fill=255)

# 应用遮罩
result = Image.new("RGBA", size)
result.paste(image, (0, 0), mask)

# 保存结果
result.save("circle_image.png")
2. JavaScript(Canvas API)

在 Web 开发中,可以使用 HTML5 的 Canvas API 来实现圆形裁剪。

<canvas id="canvas"></canvas>
<script>
  const canvas = document.getElementById("canvas");
  const ctx = canvas.getContext("2d");

  const img = new Image();
  img.src = "example.jpg";
  img.onload = () => {
    const size = Math.min(img.width, img.height);
    canvas.width = size;
    canvas.height = size;

    // 绘制圆形裁剪
    ctx.beginPath();
    ctx.arc(size / 2, size / 2, size / 2, 0, Math.PI * 2);
    ctx.clip();
    ctx.drawImage(img, (size - img.width) / 2, (size - img.height) / 2);
  };
</script>
3. OpenCV

OpenCV 是一个流行的计算机视觉库,适合需要更复杂图像处理的场景。

import cv2
import numpy as np

# 读取图片
image = cv2.imread("example.jpg")
height, width = image.shape[:2]

# 创建圆形遮罩
mask = np.zeros((height, width), dtype=np.uint8)
center = (width // 2, height // 2)
radius = min(width, height) // 2
cv2.circle(mask, center, radius, 255, -1)

# 应用遮罩
result = cv2.bitwise_and(image, image, mask=mask)

# 保存结果
cv2.imwrite("circle_image.png", result)

三、注意事项

  1. 透明背景:如果需要透明背景,保存图片时应使用支持透明度的格式(如 PNG)。
  2. 图片居中裁剪:确保圆形区域居中,可以先将图片裁剪为正方形。
  3. 分辨率:裁剪后可能需要调整分辨率以适配不同的使用场景。
  4. 你也可以直接使用免费截取工具 英文版

posted @ 2026-05-19 10:26  ninojiang  阅读(104)  评论(0)    收藏  举报