【问题标题】:cropping an image in a circular way ang paste on another image, using python使用python以圆形方式裁剪图像并粘贴到另一个图像上
【发布时间】:2021-06-26 16:45:57
【问题描述】:

我正在尝试将 python 中的图像裁剪为圆形。而且我还想将该图像粘贴到另一个图像的顶部,然后将图像保存为所需的格式。

这是我要以圆形方式裁剪的图像

这是裁剪后图像的外观

这是我要在其上粘贴圆形图像的图像

这是我的预期输出

这是我尝试过的代码

from PIL import Image, ImageDraw, ImageFilter

im1 = Image.open('rocket.jpg')
im2 = Image.open('lena.jpg')

width, height = im1.size
print(height, width)

mask_im = Image.new("L", im2.size, 0)
draw = ImageDraw.Draw(mask_im)
draw.ellipse((150, 40, 250, 100), fill=255)
mask_im.save('mask_circle.jpg', quality=95)

back_im = im1.copy()
back_im.paste(im2, (0, 0), mask_im)
back_im.save('rocket_pillow_paste_mask_circle.jpg', quality=95)

mask_im_blur = mask_im.filter(ImageFilter.GaussianBlur(10))
mask_im_blur.save('mask_circle_blur.jpg', quality=95)

back_im = im1.copy()
back_im.paste(im2, (0, 0), mask_im_blur)
back_im.save('rocket_pillow_paste_mask_circle_blur.jpg', quality=95)

【问题讨论】:

标签: python image-processing


【解决方案1】:
from PIL import Image, ImageDraw, ImageFilter


im1 = Image.open('rocket.jpg')
im2 = Image.open('lena.jpg')

#height, width, channels = im1.shape
width, height = im1.size
print(height, width)


# ![rocket_pillow_paste_out](data/dst/rocket_pillow_paste_out.jpg)

mask_im = Image.new("L", im2.size, 0)
draw = ImageDraw.Draw(mask_im)
draw.ellipse((140, 50, 260, 170), fill=255)
mask_im.save('mask_circle.jpg', quality=95)

back_im = im1.copy()
back_im.paste(im2, (0, 0), mask_im)
back_im.save('rocket_pillow_paste_mask_circle.jpg', quality=95)

# ![rocket_pillow_paste_mask_circle](data/dst/rocket_pillow_paste_mask_circle.jpg)

mask_im_blur = mask_im.filter(ImageFilter.GaussianBlur(10))
mask_im_blur.save('mask_circle_blur.jpg', quality=95)

back_im = im1.copy()
back_im.paste(im2, (0, 0), mask_im_blur)
back_im.save('rocket_pillow_paste_mask_circle_blur.jpg', quality=95)

# ![rocket_pillow_paste_mask_circle_blur](data/dst/rocket_pillow_paste_mask_circle_blur.jpg)

【讨论】:

    猜你喜欢
    • 2018-12-31
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2014-05-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多