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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。