Ala*_*ano 3 python python-imaging-library
我想在图片上添加水印.但只是一个文字,但一个矩形填充黑色和其中的白色文字.
现在,我只能放一个文字:
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
img = Image.open("in.jpg")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-C.ttf", 66)
#font = ImageFont.truetype("Arialbd.ttf", 66)
draw.text((width - 510, height-100),"copyright",(209,239,8), font=font)
img.save('out.jpg')
Run Code Online (Sandbox Code Playgroud)
这将在黑色矩形背景上绘制文本:
import Image
import ImageFont
import ImageDraw
img = Image.open("in.jpg")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-C.ttf", 66)
x, y = (width - 510, height-100)
# x, y = 10, 10
text = "copyright"
w, h = font.getsize(text)
draw.rectangle((x, y, x + w, y + h), fill='black')
draw.text((x, y), text, fill=(209, 239, 8), font=font)
img.save('out.jpg')
Run Code Online (Sandbox Code Playgroud)

使用imagemagick,可以制作出更好看的水印
import Image
import ImageFont
import ImageDraw
font = ImageFont.truetype(
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-C.ttf", 66)
text = "copyright"
size = font.getsize(text)
img = Image.new('RGBA', size=size, color=(0, 0, 0, 0))
draw = ImageDraw.Draw(img)
draw.text((0, 0), text, fill=(209, 239, 8), font=font)
img.save('label.jpg')
Run Code Online (Sandbox Code Playgroud)
然后打电话给subprocess你(如果你愿意的话)
composite -dissolve 25% -gravity south label.jpg in.jpg out.jpg
Run Code Online (Sandbox Code Playgroud)

或者如果你制作带有白色背景的标签,
composite -compose bumpmap -gravity southeast label.jpg in.jpg out.jpg
Run Code Online (Sandbox Code Playgroud)

要从Python脚本中运行这些命令,您可以使用subprocess如下:
import Image
import ImageFont
import ImageDraw
import subprocess
import shlex
font = ImageFont.truetype(
"/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-C.ttf", 66)
text = "copyright"
size = font.getsize(text)
img = Image.new('RGBA', size=size, color='white')
draw = ImageDraw.Draw(img)
draw.text((0, 0), text, fill=(209, 239, 8), font=font)
img.save('label.jpg')
cmd = 'composite -compose bumpmap -gravity southeast label.jpg in.jpg out.jpg'
proc = subprocess.Popen(shlex.split(cmd))
proc.communicate()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2705 次 |
| 最近记录: |