python批量给图片加图文水印+读取excel
在python3.7环境实现给图片添加图片水印以及文字水印。另附python读取excel单元格内容。
利用本程序修改后可以实现,给商品sku图片批量添加水印的功能。excel操作仅测试了读取单元格内容的代码。
#from PIL import Image from PIL import Image, ImageDraw, ImageFont ##pip install pillow # #import datetime import time def pic_add(textin1,textin2,savename):#第一行文本,,第二行文本需要保存的图片名字 #pip install pillow #创建底图 target = Image.new('RGBA', (300, 300), (0, 0, 0, 0)) #打开头像 nike_image = Image.open("./image1.jpg") #nike_image = nike_image.resize((300, 300)) #打开装饰,水印图片,这里用固定值了,有需要的可以设置为变量 hnu_image = Image.open("./ll.jpg") # 分离透明通道 r,g,b,a = hnu_image.split() # 将头像贴到底图 nike_image.convert("RGBA") target.paste(nike_image, (0,0)) #将装饰贴到底图 hnu_image.convert("RGBA") target.paste(hnu_image,(0,0), mask=a) draw = ImageDraw.Draw(target) #显示图片 #target.show() #rawsocket.sendto(imcp_packet,(dst_addr,80)) #OSError: [WinError 10049] 在其上下文中,该请求的地址无效。 #选择文字字体和大小 setFont1 = ImageFont.truetype('C:/windows/Fonts/simsun.ttc', 30) draw.text((40,40),textin1,font=setFont1,fill='#0000ff',direction=None) setFont2 = ImageFont.truetype('C:/windows/Fonts/msyh.ttc', 60) draw.text((40,100),textin2,font=setFont2,fill='#FF0000',direction=None) setFont3 = ImageFont.truetype('C:/windows/Fonts/SIMYOU.TTF', 20) #draw.text((40,200),str(datetime.datetime.now()),font=setFont3,fill='#FFFFFF',direction=None) draw.text((40,200),str(time.strftime("%d/%m/%Y")),font=setFont3,fill='#FFFFFF',direction=None) #target.show() # 保存图片,只能保存为png格式! target.save(savename) ########################## # #python读取excel操作开始 # ########################## import openpyxl #pip install openpyxl #pip install pymodel # 打开excel文件,获取工作簿对象 wb = openpyxl.load_workbook('商品示例.xlsx') # 从工作薄中获取一个表单(sheet)对象 #sheets = wb.sheetnames #print(sheets, type(sheets)) # 创建一个表单 代码无效?? #mySheet = wb.create_sheet('Sheet1') #print(wb.sheetnames) # 获取指定的表单 #sheet3 = wb.get_sheet_by_name('商品信息') # DeprecationWarning: Call to deprecated function get_sheet_by_name(Use wb[sheetname]). #sheet4 = wb['商品信息'] #for sheet in wb: # print(sheet.title) ws = wb.active # 当前活跃的表单 #print(ws) #<Worksheet "商品信息"> #print(ws['A1']) # 获取A列的第一个对象 #<Cell '商品信息'.A1> #print(ws['A1'].value) #商品信息xxx #c = ws['B1'] #print('Row {}, Column {} is {}'.format(c.row, c.column, c.value)) # 打印这个单元格对象所在的行列的数值和内容 #print('Cell {} is {}\n'.format(c.coordinate, c.value)) # 获取单元格对象的所在列的行数和值 #print(ws.cell(row=1, column=2)) # 获取第一行第二列的单元格 #print(ws.cell(row=1, column=2).value) #print('{}行 {}列'.format(ws.max_row, ws.max_column)) #行和列的总数 max_excel_row = int(format(ws.max_row))+1 #print(max_excel_row) i =1 j = 0 for i in range(1,max_excel_row): #print(i) name = str(ws.cell(i,2).value) guige_picname = str(ws.cell(i,11).value) gongying_name = str(ws.cell(i,1).value) if name != '' and guige_picname !='None': pic_name = guige_picname + '.png' print('正在写入第('+str(i)+'/'+str(max_excel_row-1)+')个商品:'+ name +' 的图片文件:'+ pic_name) write_text1 = gongying_name write_text2 = '[' + name +']' pic_add(write_text1,write_text2,pic_name) j = j+1 print('写入有效商品图片个数:'+str(j))
本例中excel示例内容
基于互联网精神,在注明出处的前提下本站文章可自由转载!
本文链接:https://ranjuan.cn/python-watermark-excel/
赞赏
微信赞赏支付宝赞赏
发表评论