python 数字水印,python批量添加水印

  python 数字水印,python批量添加水印

  这篇文章主要为大家详细介绍了大蟒实现水印图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  在做一些工作的时候,有时候会涉及到给图片加上水印,这个如果手动添加的话,效率太低了,通常选择代码完成。下面这个是给图像添加文字水印(图片水印还在研究中)

  比如,在下面的图片中添加"美团外卖"水印

  从太平航运导入图像,图像绘制,图像字体

  将数组作为铭牌导入

  随机导入

  导入cv2

  进口是

  ###################################################################################

  class Make _ Font(object): # # # #设置文字水印

  def __init__(self,image_path,out_path,font,font_size,transparency):

  self.image_path=image_path ###读入背景图片

  self.out_path=out_path ###输出水印图片

  self.font=font ###设置水印字内容

  self.font_size=font_size ##设置字体大小

  自我。透明度=透明度###设置字体透明度

  suffix=self.out_path.split( . )[-1]

  match=re.match(rpng ,后缀)

  如果不匹配:

  引发ValueError(输出文件名必须是PNG文件!)

  定义_文本_xy(自身,图像大小):

  宽度,高度=图像大小

  x=random.randint(min(0,宽度),max(0,宽度))####随机取画文字点

  y=random.randint(min(0,高度),max(0,高度))

  返回x,y

  def _draw_font_box(自身,图像大小,字体大小):

  img_w,img_h=图像大小

  font_w,font_h=font_size

  all_x=[]

  x=0

  all_x.append(x)

  而x img_w:

  x=font_w 50 x ####隔50 画一次文字

  all_x.append(x)

  all_y=[]

  y=0

  all_y.append(y)

  而y img_h:

  y=font_h 50 y ####隔50 画一次文字

  all_y.append(y)

  返回全部x,全部y

  def run_make_font(self):

  图像=图像。开放(自我。image _ path)# #(598,419)

  image_x,image _ y=图像。尺码[0:2]# #(598,419)

  text=self.font

  text_diap=self。透明度####设置字体透明度越小越透明(0,100)

  font=ImageFont.truetype(1.ttf ,self.font_size) ##设置字体和大小

  layer=image.convert(RGBA) ##转换图像格式:A为透明度尺寸(598, 419)

  max_size=max(图像_x,图像_y)

  text_overlayer=Image.new(RGBA ,(2*max_size,2*max_size),(255,255,255,0)) ##生成同等大小的透明图片

  image_draw=ImageDraw .Draw(text_overlayer) ##画图

  text_size_x,text _ size _ y=image _ draw。textsize(text,font=font) ##获取文本大小

  #print(text_size_x,text_size_y) ##字体大小(250,50)

  x计数,y计数=自身._ draw _ font _ box(text _ overlayer。大小,(文本大小x,文本大小y)

  对于x_count:中的我

  对于y _计数:中的j

  #text_x,text_y=text_xy((image_x,image_y)) ##设置文本位置

  image_draw.text((int(i),int(j)),text,font=font,fill=(255,255,255,text_diap)) ##设置文本颜色和透明度

  text _ overlayer=text _ overlayer。旋转(45)#设置逆时针旋转45度

  ####### 设置切割点##############

  box _ x=(text _ overlayer。size[0]-image _ x)/2

  box _ y=(text _ overlayer。size[1]-image _ y)/2

  盒子=[盒子x,盒子y,盒子x图像_x,框_y图像_y]

  new _ img=text _ overlayer。裁剪(方框)

  new _ img=new _ img。调整图层大小。尺寸)

  # text _ overlayer。保存( text _ overlayer _ after。png )# #生成的水印png图片

  #new_img.save(new_img.png) ##生成的水印png图片

  after=图像。alpha _ composite(layer,new _ img)#(im1,im2)将im2复合到im1上,返回一个图像对象

  after.save(self.out_path) ### .png可以直接保存颜色格式

  #########################################################################################

  if __name__==__main__:

  ############### 文字水印########################

  MK=Make_Font(image_path= ./without_water/test5.jpg ,out_path=test5_after.png ,font=美团外卖,font_size=30,透明度=90)

  MK.run_make_font()

  ##################################################

  此代码主要用于给图像添加特定的文本水印,可以调整文本内容、文本大小和文本透明度(image_path为原始图像,out_path为输出水印图像)。

  效果图如下:

  注:上传图像的时候,图像进行了压缩。

  本来打算再写一段代码生成图像Logo的水印,可惜一直没有达到预期。

  这就是本文的全部内容。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: