python使用PIL模块实现给图片打水印的方法

python使用PIL模块实现给图片打水印的方法,第1张

概述本文实例讲述了python使用PIL模块实现给图片打水印方法。分享给大家供大家参考。具体实现方法如下:

本文实例讲述了python使用PIL模块实现给图片打水印的方法。分享给大家供大家参考。具体实现方法如下:

import Image,ImageEnhancedef reduce_opacity(im,opacity):  """Returns an image with reduced opacity."""  assert opacity >= 0 and opacity <= 1  if im.mode != 'RGBA':    im = im.convert('RGBA')  else:    im = im.copy()  Alpha = im.split()[3]  Alpha = ImageEnhance.Brightness(Alpha).enhance(opacity)  im.putAlpha(Alpha)  return imdef watermark(im,mark,position,opacity=1):  """Adds a watermark to an image."""  if opacity < 1:    mark = reduce_opacity(mark,opacity)  if im.mode != 'RGBA':    im = im.convert('RGBA')  # create a transparent layer the size of the image and draw the  # watermark in that layer.  layer = Image.new('RGBA',im.size,(0,0))  if position == 'tile':    for y in range(0,im.size[1],mark.size[1]):      for x in range(0,im.size[0],mark.size[0]):        layer.paste(mark,(x,y))  elif position == 'scale':    # scale,but preserve the aspect ratio    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)  # composite the watermark with the layer  return Image.composite(layer,im,layer)def test():  im = Image.open('test.png')  mark = Image.open('overlay.png')  watermark(im,'tile',0.5).show()  watermark(im,'scale',1.0).show()  watermark(im,(100,100),0.5).show()if __name__ == '__main__':  test()

希望本文所述对大家的Python程序设计有所帮助。

总结

以上是内存溢出为你收集整理的python使用PIL模块实现给图片打水印的方法全部内容,希望文章能够帮你解决python使用PIL模块实现给图片打水印的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1202739.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存