You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pillow实现示例图片中的模糊过渡效果

如何使用Pillow实现示例图片中的模糊过渡效果

嘿,我完全懂你想要的那种效果——就是像PS里做的那样,两张图在边缘处自然过渡,还带着渐变模糊的柔化感对吧?你之前试了裁剪像素、用Pillow自带的模糊但没达到预期,其实问题出在没结合渐变蒙版来控制模糊的过渡范围,我来一步步教你怎么实现:

核心思路

本质上就是先把两张图拼接,然后在过渡区域用渐变蒙版让模糊后的图层和原图自然融合,模拟出从清晰到模糊再到另一张图的过渡效果。

具体步骤

假设你已经有两张要拼接的图片(左图img_left、右图img_right),先确保它们的高度一致,不一样的话用img.resize()调整下尺寸。

  1. 拼接基础图
    先把两张图横向拼在一起,得到一张完整的底图:
from PIL import Image, ImageFilter

# 先加载你的两张图片
img_left = Image.open("left_image.jpg")
img_right = Image.open("right_image.jpg")

# 统一高度(假设以左图高度为准)
img_right = img_right.resize((img_right.width, img_left.height))

w1, h = img_left.size
w2, _ = img_right.size

# 创建拼接后的空白图,把两张图贴进去
combined = Image.new('RGB', (w1 + w2, h))
combined.paste(img_left, (0, 0))
combined.paste(img_right, (w1, 0))
  1. 制作模糊版的左图
    给左图做高斯模糊,模糊半径可以根据你想要的柔化程度调整(比如20,数值越大越模糊):
blurred_left = img_left.filter(ImageFilter.GaussianBlur(radius=20))
  1. 创建渐变蒙版
    我们需要一个从完全不透明到完全透明的渐变蒙版,用来控制模糊左图的叠加范围——让左图的右侧区域(比如50像素宽的过渡区)从清晰逐渐变成模糊:
# 创建一个灰度蒙版(L模式),初始全黑(对应不透明)
mask = Image.new('L', (w1, h), 0)

# 定义过渡区宽度,这里设为50像素,你可以按需调整
transition_width = 50

# 给过渡区填充渐变的透明度
for x in range(max(0, w1 - transition_width), w1):
    # 计算当前x位置的透明度:从0到255渐变
    alpha_value = int(255 * (x - (w1 - transition_width)) / transition_width)
    for y in range(h):
        mask.putpixel((x, y), alpha_value)
  1. 叠加模糊图层实现过渡
    把模糊后的左图通过蒙版叠加到拼接图上,这样过渡区就会自然呈现清晰到模糊的效果,和右图无缝衔接:
combined.paste(blurred_left, (0, 0), mask=mask)

# 最后保存结果
combined.save("transition_result.jpg")

额外调整建议

  • 如果想要过渡区在右图的左侧,只需要把模糊对象换成右图,蒙版也改成在右图左侧区域做渐变,然后叠加到拼接图的对应位置就行。
  • 可以调整transition_width(过渡区宽度)和radius(模糊半径)来适配你的图片风格,多试几次就能找到最贴合的参数。

你之前的尝试没成功,是因为单独裁剪像素或全图模糊都没法控制过渡的自然度,用渐变蒙版就能精准控制模糊的范围和强度,和PS里的蒙版原理是一样的哦~

备注:内容来源于stack exchange,提问作者user23273740

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:43:07