gpt4 book ai didi

python - 使用 PIL 在 Python 中围绕文本创建光环?

转载 作者:太空狗 更新时间:2023-10-29 22:23:20 27 4
gpt4 key购买 nike

我正在使用 PIL 为一些图片加水印,但我很难阅读一些文本(深色背景上的黑色文本)。我不能只更改文本颜色,因为我有各种各样的背景颜色。有没有办法在文本周围添加光环效果?

例如: http://i.imgur.com/WYxSU.jpg底部的文字是我已经得到的,顶部的文字是我希望得到的(除了颜色)。我真的只需要在文本周围画一个细轮廓。有任何想法吗?如果您真的认为它会有所作为,我可以上传一些代码,但这只是一个普通的 PIL ImageDraw.Draw 命令。谢谢!

最佳答案

如果你不太在意速度,你可以使用合成:

  1. 在空白的 RGBA 图像上绘制带有光晕颜色的文本
  2. 模糊它
  3. 用文字颜色重新绘制
  4. 反转此图像以获得合成蒙版
  5. 与原始图像“合并”

例如:

import sys
import Image, ImageChops, ImageDraw, ImageFont, ImageFilter

def draw_text_with_halo(img, position, text, font, col, halo_col):
halo = Image.new('RGBA', img.size, (0, 0, 0, 0))
ImageDraw.Draw(halo).text(position, text, font = font, fill = halo_col)
blurred_halo = halo.filter(ImageFilter.BLUR)
ImageDraw.Draw(blurred_halo).text(position, text, font = font, fill = col)
return Image.composite(img, blurred_halo, ImageChops.invert(blurred_halo))

if __name__ == '__main__':
i = Image.open(sys.argv[1])
font = ImageFont.load_default()
txt = 'Example 1234'
text_col = (0, 255, 0) # bright green
halo_col = (0, 0, 0) # black
i2 = draw_text_with_halo(i, (20, 20), txt, font, text_col, halo_col)
i2.save('halo.png')

它有很多优点:

  • 结果很顺利,看起来不错
  • 你可以选择不同的过滤器而不是BLUR来获得不同的“光晕”
  • 即使使用非常大的字体也能正常工作,而且看起来仍然很棒

要获得更厚的光晕,您可以使用这样的滤镜:

kernel = [
0, 1, 2, 1, 0,
1, 2, 4, 2, 1,
2, 4, 8, 4, 1,
1, 2, 4, 2, 1,
0, 1, 2, 1, 0]
kernelsum = sum(kernel)
myfilter = ImageFilter.Kernel((5, 5), kernel, scale = 0.1 * sum(kernel))
blurred_halo = halo.filter(myfilter)

部分 scale = 0.1 * sum(kernel) 使光晕变厚(小值)或变暗(大值)。

关于python - 使用 PIL 在 Python 中围绕文本创建光环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12008493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com