How can I write text over an image, and overlay another image on it, in Python?

后端 未结 3 827
北海茫月
北海茫月 2021-02-04 12:38

I need to put some text over a PNG image in Python, I need to put another image too over the first one.

So I\'ll have a base image (the same for every image created), a

相关标签:
3条回答
  • 2021-02-04 13:16

    I think opencv is easier to use:

    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    image = cv2.imread('xxx.png')  
    texted_image =cv2.putText(img=np.copy(image), text="hello", org=(200,200),fontFace=3, fontScale=3, color=(0,0,255), thickness=5)
    plt.imshow(texted_image)
    plt.show()
    

    Note that the original image may be changed, so I add np.copy to protect it. More details on the function is http://docs.opencv.org/2.4.8/modules/core/doc/drawing_functions.html?highlight=puttext#cv2.putText

    The fontFace can be referred to https://codeyarns.com/2015/03/11/fonts-in-opencv/

    0 讨论(0)
  • 2021-02-04 13:22

    PIL is one approach. You might also look at ImageMagick, which also supports compositing images and putting text into images (and lots of other stuff).

    There's a python interface to ImageMagick through PythonMagick.

    0 讨论(0)
  • 2021-02-04 13:24

    PIL can do it:

    from PIL import Image, ImageFont, ImageDraw
    font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf", 25)
    img = Image.new("RGBA", (200,200), (120,20,20))
    draw = ImageDraw.Draw(img)
    draw.text((0,0), "This is a test", (255,255,0), font=font)
    img.save("a_test.png")
    

    The only error that can occur is not to find the font. In this case you must change the code line:

    font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf",25)
    

    Source: http://python-catalin.blogspot.com/2010/06/add-text-on-image-with-pil-module.html

    0 讨论(0)
提交回复
热议问题