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程序设计有所帮助。