首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python从黑白图像创建水印

使用python从黑白图像创建水印
EN

Stack Overflow用户
提问于 2022-09-11 22:29:53
回答 1查看 57关注 0票数 -3

我对使用python和图像处理非常陌生。

我有一个图像,我想放在另一个图像之上。图像是黑白的,我只想要黑色的部分被放置。我想移除白色的部分。

我基本上想要创建一个水印,我可以放置在任何地方的图像。下面是我想要将水印放在上面的一个示例图像。

这个博客文章讨论了如何在图像上制作水印。但我不想要整个图像,只是我水印的黑色部分。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-12 01:09:29

您可以使用PIL (或cv2numpy)来制作它。

因为你有黑白图像,所以你可以复制它,反转它,并把它作为阿尔法通道,以获得透明度而不是白色像素。

接下来,您可以将其resize为预期大小(我使用第二个图像的大小),也可以在选定的位置对第二个图像进行paste (我使用(0,0)),它将放置在没有透明像素的情况下。图像不一定要大小相同。

您可以使用其他功能进行其他修改,并获得不同的效果。有些函数可能需要使用相同大小的图像。

医生:Pillow.Image

代码语言:javascript
复制
from PIL import Image, ImageChops

import PIL
print(PIL.__version__)

# --- load ---

img1 = Image.open('Z9yFZ.jpg')
img2 = Image.open('Uh4LU.jpg')

# --- alpha channel ---

R,G,B = img1.split()
gray  = img1.convert('L')
alpha = ImageChops.invert(gray)

img1 = Image.merge('RGBA', [R,G,B,alpha])

# --- resize ---

img1.thumbnail(img2.size)

# --- merge ---

img2.paste(img1, (0,0), img1) # second `img1` as `mask`

img2.show()

# --- save ---

img2.save('result.jpg')

结果:

编辑:

我从未测试过它,但是模块魔杖 (它使用ImageMagick)有函数水印

编辑:

我创建了这样的代码:

代码语言:javascript
复制
from wand.image import Image
from wand.display import display
from wand.color import Color

import wand
print(wand.version.VERSION)
print(wand.version.MAGICK_VERSION)

# --- load ---

img1 = Image(filename='Z9yFZ.jpg')  # has to use `filename=`
img2 = Image(filename='Uh4LU.jpg')  # has to use `filename=`

# --- alpha channel ---

#img1.alpha_channel = 'background'

#color = Color('#FFFFFF')  # white
color = Color('white')    # white
#color = Color('#000000')  # black
#color = Color('black')    # black
#color = img1.background_color
ten_percent = int(65535*0.1)  # remove similar colors (65535 = 2^16-1)

img1.transparent_color(color, alpha=0.0, fuzz=ten_percent)

# --- resize ---

w, h = img2.size
img1.transform(resize=f"{w}x{h}>")

# --- merge ---

img2.watermark(img1, left=0, top=0, transparency=0.5)  # transparent, looks good even without `fuzz=ten_percent` 
#img2.composite(img1, left=0, top=0)                    # not transparent, looks better with `fuzz=ten_percent`

display(img2)

# --- save ---

img2.save(filename='result.jpg')  # has to use `filename=`

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73683026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档