Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中生成文本阴影效果?_Python_Image Processing_Text_Python Imaging Library - Fatal编程技术网

如何在python中生成文本阴影效果?

如何在python中生成文本阴影效果?,python,image-processing,text,python-imaging-library,Python,Image Processing,Text,Python Imaging Library,到目前为止,我已经实现了枕头,但在一些照片上看不到,所以我想在图像后面添加一些阴影(在文本中称为提升效果),如 这基本上是添加了两个文本,一个是模糊版本,另一个是顶部的普通文本,尺寸稍小(请查看第二张图片以了解) 我找不到任何关于如何模糊文本的地方,因此如果有人能帮我解决这个问题,那就太好了。不是100%确定你必须从什么开始,或者你真正想从什么结束,但是这里有一种技术可以给你文本后面一个柔和的阴影。基本上,您可以执行以下操作: 创建一块足够大的画布来放置文本 在画布上写下你的文字 模糊它来软化

到目前为止,我已经实现了枕头,但在一些照片上看不到,所以我想在图像后面添加一些阴影(在文本中称为提升效果),如 这基本上是添加了两个文本,一个是模糊版本,另一个是顶部的普通文本,尺寸稍小(请查看第二张图片以了解)
我找不到任何关于如何模糊文本的地方,因此如果有人能帮我解决这个问题,那就太好了。

不是100%确定你必须从什么开始,或者你真正想从什么结束,但是这里有一种技术可以给你文本后面一个柔和的阴影。基本上,您可以执行以下操作:

  • 创建一块足够大的画布来放置文本
  • 在画布上写下你的文字
  • 模糊它来软化它
  • 将其粘贴到原始图像上
  • 把尖锐的文字写在上面
有一百万种变体,有不同类型的模糊、不同的字体大小、不同的底色(阴影颜色)以及将模糊文本粘贴/合成到原始文本上的不同方式。但是,如果你把下面的代码作为一个起点,你可以尝试,直到你满意为止

#!/usr/bin/env python3
# See also: https://legacy.imagemagick.org/Usage/fonts/#soft_shadow
from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageChops

# Open background image and work out centre
bg = Image.open('bg.png').convert('RGB')
x = bg.width//2
y = bg.height//2

# The text we want to add
text = "StackOverflow"

# Create font
font = ImageFont.truetype('/System/Library/Fonts/MarkerFelt.ttc', 60)

# Create piece of canvas to draw text on and blur
blurred = Image.new('RGBA', bg.size)
draw = ImageDraw.Draw(blurred)
draw.text(xy=(x,y), text=text, fill='cyan', font=font, anchor='mm')
blurred = blurred.filter(ImageFilter.BoxBlur(7))

# Paste soft text onto background
bg.paste(blurred,blurred)

# Draw on sharp text
draw = ImageDraw.Draw(bg)
draw.text(xy=(x,y), text=text, fill='navy', font=font, anchor='mm')
bg.save('result.png')
原始图像

结果图像