当前位置: 首页 > 知识库问答 >
问题:

python如何把一个png中不透明的部分缩小再与另一个图片为背景全成一张图?

欧阳勇
2023-06-28

一个png中不透明的部分缩小部分要求放在另一张图片的指点坐标处,比如x,y都居中

共有2个答案

孟华晖
2023-06-28

要将一个PNG图像中不透明的部分缩小,并与另一张背景图片合并,你可以使用Python的PIL库(Pillow)来实现。下面是一个示例代码:
from PIL import Image

打开PNG图像和背景图像

foreground_image = Image.open('foreground.png')
background_image = Image.open('background.png')

缩小前景图像的尺寸

width, height = foreground_image.size
scaled_width, scaled_height = int(width/2), int(height/2)
scaled_foreground = foreground_image.resize((scaled_width, scaled_height))

在背景图像上创建一个新的图像对象

merged_image = background_image.copy()

计算将缩小后的前景图像放置在背景图像中心的坐标

center_x = (background_image.width - scaled_width) // 2
center_y = (background_image.height - scaled_height) // 2

将缩小后的前景图像粘贴到背景图像上

merged_image.paste(scaled_foreground, (center_x, center_y), mask=scaled_foreground)

保存合并后的图像

merged_image.save('merged_image.png')

请确保将"foreground.png"替换为你的PNG图像文件名,"background.png"替换为你的背景图像文件名。这段代码将打开前景图像和背景图像,将前景图像缩小一半,并将其放置在背景图像中央,然后保存合并后的图像为"merged_image.png"。

费朗
2023-06-28
from PIL import Image, ImageDraw, ImageFont

def add_watermark(img_path, watermark_path):
    # 加载主图片
    main_img = Image.open(img_path).convert('RGBA')
    main_width, main_height = main_img.size

    # 加载水印图片
    watermark_img = Image.open(watermark_path).convert('RGBA')
    watermark_width, watermark_height = watermark_img.size

    # 水印图片缩小一半
    scale = 0.5
    new_size = (int(watermark_width * scale), int(watermark_height * scale))

    # 改变图像大小
    new_img = watermark_img.resize(new_size)
    width, height = new_img.size

    # 创建画布
    position = (int((main_width - width)/2), int((main_height - height)/2))
    watermark_canvas = Image.new('RGBA', main_img.size, (0, 0, 0, 0))
    watermark_canvas.paste(new_img, position)

    # 合并图片
    result_img = Image.alpha_composite(main_img, watermark_canvas)

    # 保存图片
    result_path = img_path.split('/')[-1].split('.')[0] + '_with_watermark.png'
    result_img.save(result_path)
    print('Watermark added successfully to the image: ', result_path)

add_watermark('./main.webp', './water.png')
 类似资料:
  • 假设我有 我想放一个并给它一个为-但我想要我写的文本有完全的不透明度()。 如果我像这样编写CSS 所有的东西都是低透明度的--我不想那样。 所以我的问题是--我怎样才能获得低不透明度背景图像与全不透明度文本?

  • 问题内容: 我正在尝试创建透明的png图像,并对其他各种png和jpg进行分层,以创建具有透明度的最终png。我在创建初始的空透明png时遇到问题。目前有白色背景。 谁能指出我正确的方向。到目前为止,这是我的代码… 问题答案: 在每个新图层上设置。 尝试这个:

  • 本文向大家介绍如何使用css3实现一个div设置多张背景图片?相关面试题,主要包含被问及如何使用css3实现一个div设置多张背景图片?时的应答技巧和注意事项,需要的朋友参考一下 background-image:url("1.jpg"),url("2.jpg"),url("3.jpg"); background-repeat: no-repeat, no-repeat, no-repeat; b

  • 我正在将PNG转换为JPG。透明背景默认变为黑色。我需要它是白色的。

  • 我有一个9补丁设置为我的布局背景。然而,我仍然希望通过使用< code > selectableitembackund 属性来提供触摸反馈。 我试过使用

  • 本文向大家介绍php缩放gif和png图透明背景变成黑色的解决方法,包括了php缩放gif和png图透明背景变成黑色的解决方法的使用技巧和注意事项,需要的朋友参考一下 工作中需要缩放一些gif图然后在去Imagecopymerge,可是发现使用了imagecreatetruecolor和imagecopyresampled后发现背景图不对,本来透明的背景图变成了黑色,后来发现做一些修改才可以: 然