在 PythonMagick 中绘制文本?

发布于 2024-12-10 08:19:17 字数 66 浏览 0 评论 0原文

如何在 PythonMagick 中绘制文本?我需要向 JPG 文件添加水印,但我在 Python 上找不到任何示例。

How can I drawing text in PythonMagick? I need add watermark to JPG files, but I can't find any example on Python.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等往事风中吹 2024-12-17 08:19:18

看起来您需要使用 Image.composite() 方法将水印图像分层在目标图像之上:

import PythonMagick

sample = PythonMagick.Image('sample.jpg')
watermark = PythonMagick.Image('watermark.jpg')

sample.composite(watermark, 50, 50,
                 PythonMagick.CompositeOperator.AtopCompositeOp)

sample.write('output.jpg')

编辑

更仔细地查看 PythonMagick 后,我会强烈建议不要使用它,因为它的 API 很难使用,而且没有 Python 友好的文档。相反,我建议使用 Python 成像库。这是一个基本的水印示例:

from PIL import Image, ImageDraw, ImageFont, ImageEnhance

image = Image.open('sample.jpg'))
font = ImageFont.truetype('/usr/share/fonts/TTF/DejaVuSans.ttf', 20)
watermark = Image.new('RGBA', (120, 25), (255, 255, 255))
draw = ImageDraw.Draw(watermark)
draw.text((5, 0), 'Watermark', (0, 0, 0), font)
mask = ImageEnhance.Brightness(watermark).enhance(0.2)
image.paste(watermark, (25, 25), mask)
image.save('output.jpg')

It looks like you need to use the Image.composite() method to layer the watermark image on top of the target image:

import PythonMagick

sample = PythonMagick.Image('sample.jpg')
watermark = PythonMagick.Image('watermark.jpg')

sample.composite(watermark, 50, 50,
                 PythonMagick.CompositeOperator.AtopCompositeOp)

sample.write('output.jpg')

EDIT

After looking more closely at PythonMagick, I would strongly advise against using it, as its API is quite hard to use and there is no python-friendly documentation. Instead, I would recommend using the Python Imaging Library. Here's a basic watermarking example:

from PIL import Image, ImageDraw, ImageFont, ImageEnhance

image = Image.open('sample.jpg'))
font = ImageFont.truetype('/usr/share/fonts/TTF/DejaVuSans.ttf', 20)
watermark = Image.new('RGBA', (120, 25), (255, 255, 255))
draw = ImageDraw.Draw(watermark)
draw.text((5, 0), 'Watermark', (0, 0, 0), font)
mask = ImageEnhance.Brightness(watermark).enhance(0.2)
image.paste(watermark, (25, 25), mask)
image.save('output.jpg')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文