PIL imagefont文字加边框

使用pil给图片中的文字加个边框,像这样

真的是找了很久才找到的,后来在https://stackoverflow.com/questions/41556771/is-there-a-way-to-outline-text-with-a-dark-line-in-pil中简单粗暴地解决了问题,直接上代码

from PIL import Image,ImageDraw,ImageFont
import os


# 用于文字边框展示,传入draw,坐标x,y,字体,边框颜色和填充颜色
def text_border(draw, x, y, font, shadowcolor, fillcolor):
    # thin border
    draw.text((x - 1, y), text, font=font, fill=shadowcolor)
    draw.text((x + 1, y), text, font=font, fill=shadowcolor)
    draw.text((x, y - 1), text, font=font, fill=shadowcolor)
    draw.text((x, y + 1), text, font=font, fill=shadowcolor)

    # thicker border
    draw.text((x - 1, y - 1), text, font=font, fill=shadowcolor)
    draw.text((x + 1, y - 1), text, font=font, fill=shadowcolor)
    draw.text((x - 1, y + 1), text, font=font, fill=shadowcolor)
    draw.text((x + 1, y + 1), text, font=font, fill=shadowcolor)

    # now draw the text over it
    draw.text((x, y), text, font=font, fill=fillcolor)



x, y = 10, 10

fname1 = "frameinstance0.png"
im = Image.open(fname1)
pointsize = 30
fillcolor = (0,0,0)
shadowcolor = "yellow"

text = "hi there"

font="impact.ttf"
draw = ImageDraw.Draw(im)
font = ImageFont.truetype(font, pointsize)

# 调用函数
text_border(draw,x,y,font,shadowcolor,fillcolor)

fname2 = "c:/test2.jpg"
im.show()
im.save(fname2)

# os.startfile(fname2)#这个展示这个图片

成功解决问题,感谢分享

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要对tiff文件进行矩形框绘制和标注文字,可以使用Python中的Pillow库和OpenCV库。 首先,使用Pillow库打开tiff文件: ```python from PIL import Image img = Image.open("example.tif") ``` 接下来,使用Pillow库的ImageDraw模块绘制矩形框: ```python from PIL import Image, ImageDraw # 创建ImageDraw对象 draw = ImageDraw.Draw(img) # 绘制矩形框 draw.rectangle((10, 10, 100, 100), outline='red', width=2) # 显示图片 img.show() ``` 其中,`draw.rectangle((10, 10, 100, 100), outline='red', width=2)`表示绘制一个左上角坐标为(10,10),右下角坐标为(100,100)的矩形框,边框颜色为红色,线的宽度为2。 如果要在矩形框中添文字标注,可以使用`draw.text()`方法: ```python from PIL import Image, ImageDraw, ImageFont # 创建ImageDraw对象 draw = ImageDraw.Draw(img) # 绘制矩形框 draw.rectangle((10, 10, 100, 100), outline='red', width=2) # 添文字标注 font = ImageFont.truetype("arial.ttf", 16) draw.text((20, 20), "Example Text", font=font) # 显示图片 img.show() ``` 其中,`font = ImageFont.truetype("arial.ttf", 16)`表示使用字体为arial,大小为16的字体,`draw.text((20, 20), "Example Text", font=font)`表示在矩形框内添文字标注,文字内容为"Example Text",坐标为(20,20)。 如果要使用OpenCV库进行绘制,可以使用cv2.rectangle()和cv2.putText()方法: ```python import cv2 # 读取tiff文件 img = cv2.imread('example.tif') # 绘制矩形框 cv2.rectangle(img, (10,10), (100,100), (0,0,255), 2) # 添文字标注 cv2.putText(img, "Example Text", (20,20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 1, cv2.LINE_AA) # 显示图片 cv2.imshow("Image", img) cv2.waitKey(0) ``` 其中,`cv2.rectangle(img, (10,10), (100,100), (0,0,255), 2)`表示绘制一个左上角坐标为(10,10),右下角坐标为(100,100)的矩形框,颜色为红色,线的宽度为2,`cv2.putText(img, "Example Text", (20,20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 1, cv2.LINE_AA)`表示在矩形框内添文字标注,文字内容为"Example Text",坐标为(20,20),字体为FONT_HERSHEY_SIMPLEX,大小为0.5,颜色为白色,线的宽度为1。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值