python使用PIL模块实现给图片打水印的方法
本文实例讲述了python使用PIL模块实现给图片打水印的方法。分享给大家供大家参考。具体实现方法如下:
importImage,ImageEnhance
defreduce_opacity(im,opacity):
"""Returnsanimagewithreducedopacity."""
assertopacity>=0andopacity<=1
ifim.mode!='RGBA':
im=im.convert('RGBA')
else:
im=im.copy()
alpha=im.split()[3]
alpha=ImageEnhance.Brightness(alpha).enhance(opacity)
im.putalpha(alpha)
returnim
defwatermark(im,mark,position,opacity=1):
"""Addsawatermarktoanimage."""
ifopacity<1:
mark=reduce_opacity(mark,opacity)
ifim.mode!='RGBA':
im=im.convert('RGBA')
#createatransparentlayerthesizeoftheimageanddrawthe
#watermarkinthatlayer.
layer=Image.new('RGBA',im.size,(0,0,0,0))
ifposition=='tile':
foryinrange(0,im.size[1],mark.size[1]):
forxinrange(0,im.size[0],mark.size[0]):
layer.paste(mark,(x,y))
elifposition=='scale':
#scale,butpreservetheaspectratio
ratio=min(
float(im.size[0])/mark.size[0],float(im.size[1])/mark.size[1])
w=int(mark.size[0]*ratio)
h=int(mark.size[1]*ratio)
mark=mark.resize((w,h))
layer.paste(mark,((im.size[0]-w)/2,(im.size[1]-h)/2))
else:
layer.paste(mark,position)
#compositethewatermarkwiththelayer
returnImage.composite(layer,im,layer)
deftest():
im=Image.open('test.png')
mark=Image.open('overlay.png')
watermark(im,mark,'tile',0.5).show()
watermark(im,mark,'scale',1.0).show()
watermark(im,mark,(100,100),0.5).show()
if__name__=='__main__':
test()
希望本文所述对大家的Python程序设计有所帮助。
热门推荐
10 喜得孙子祝福语简短唯美
11 婚礼祝福语简短朴实大众
12 员工周年祝福语大全简短
13 家长回复节日祝福语简短
14 简短生日祝福语老同学
15 夜雨祝福语简短10字
16 蛋糕祝福语简短闺蜜
17 部门过年祝福语简短独特
18 简短精炼的结婚祝福语