python批量添加水印_用Python批量添加水印,提高工作效率!
平常工作中,為保護原創,我們常常會給圖片打水印,但是一般的工具存在水印只能添加在固定位置(比如左上、左下等),或者無法批量添加水印的問題。這些不靈活的應用會影響我們的工作效率。
今天,未明學院的老師就用Python幫大家解決這些問題,提高你的工作效率!
01
單張圖片加圖片水印
舉個例子,我想為這張無水印圖片打上水印:
首先導入用于完成打水印操作的Image模塊:
from PIL import Image
使用 open() 函數指定要作為水印的圖片:
watermark = Image.open(r"C:UsersadminDesktop運營批量給圖片加水印LOGO.png")
指定要打水印的圖片:
imageFile = Image.open(r"C:UsersadminDesktop運營批量給圖片加水印數據分析技能課.jpg")
制作一個和imageFile大小相等的透明圖片:
layer = Image.new('RGBA', imageFile.size, (0,0,0,0))
把水印圖片貼在layer圖片上,位置在右下角,距右邊線300像素,下邊線 100像素,如果layer.paste(watermark, (300, 100)),則是把水印打在左上角:
layer.paste(watermark, (imageFile.size[0]-300, imageFile.size[1]-100))
把layer和imageFile組合到一起,第2個參數是imageFile,第1、3個參數是layer:
out=Image.composite(layer,imageFile,layer)
保存帶有水印的圖片:
out.save(r"C:UsersadminDesktop運營批量給圖片加水印數據分析技能課_圖片水印.jpg")
現在可以看到圖片右下角已經加上水印了:
02
單張圖片加文字水印
除了添加圖片水印,還可以添加文字水印!我們接著往下看~
首先,指定需要加水印的圖片:
imageFile = Image.open(r"C:UsersadminDesktop運營批量給圖片加水印數據分析技能課.jpg")
指定字體文件及字體大小:
font_big = ImageFont.truetype(r'C:UsersadminDesktop運營批量給圖片加水印NotoSansCJKsc-Black.otf', 24)
font_samll = ImageFont.truetype(r'C:UsersadminDesktop運營批量給圖片加水印NotoSansCJKsc-Black.otf', 15)
指定需要刻畫的文字:
text1 = '未明學院'
text2 = 'http://www.enaca.cn'
準備在imageFile上刻畫文字:
draw = ImageDraw.Draw(imageFile)
(imageFile.size[0]-450, imageFile.size[1]-85)用于指定刻畫的文本的位置,以左上角為原點;text1和text2是要刻畫的文本;fill設置刻畫的文本的顏色,依次為RGB;font指定刻畫的字體和大小:
draw.text((imageFile.size[0]-450, imageFile.size[1]-85), text1, fill=(134, 153, 153), font=font_big)
draw.text((imageFile.size[0]-485, imageFile.size[1]-45), text2, fill=(134, 153, 153),font=font_samll)
最后只需導出圖像:
imageFile.save(r"C:UsersadminDesktop運營批量給圖片加水印數據分析技能_文字水印.png")
一張帶文字水印的圖片就新鮮出爐啦~
03
批量添加圖片水印
如果圖片太多,還可以直接批量打水印。
首先,導入os模塊和Image模塊,前者用于獲取文件路徑,創建文件等操作;后者用于完成打水印操作:
import os
from PIL import Image
指定需要打水印的批量圖片所在的文件夾:
start_folder =r"C:UsersadminDesktop運營批量給圖片加水印等待打水印的圖片"
指定圖片打完水印之后保存的目的地文件夾:
target_folder = r"C:UsersadminDesktop運營批量給圖片加水印完成打水印的圖片"
如果指定的目的地文件夾不存在,那么就創建一個,如果存在就不需要創建了。
注意:target_folder只是一個代表路徑的字符串,真正創建文件夾需要os.mkdir(today):
if not os.path.exists(target_folder):
os.mkdir(target_folder)
使用for...in遍歷批量加水印,取出start_folder內的每一張圖片進行打水印操作;其中os.listdir(start_folder)是start_folder文件夾下的每個文件的名字構成的列表:
for i in os.listdir(start_folder):
分別構建需要打水印的圖片的完整路徑start_file和打完水印的圖片的完整路徑target_file,包括所在文件夾、 和它的名字三個部分;其中os.sep 代表在路徑中的一個 。這兩個句子放在for循環中遍歷:
start_file = start_folder + os.sep + i
target_file = target_folder + os.sep + i
以下部分參考前面單張圖片打水印的代碼說明~
指定作為水印的圖片:
watermark = Image.open(r"C:UsersadminDesktop運營批量給圖片加水印LOGO.png")
指定要打水印的圖片:
imageFile = Image.open(start_file)
制作一個和imageFile大小相等的透明圖片:
layer = Image.new('RGBA', imageFile.size, (0,0,0,0))
指定水印在圖片中的位置,右下角:
layer.paste(watermark, (imageFile.size[0]-300, imageFile.size[1]-100))
把layer和imageFile組合到一起,第2個參數是imageFile,第1、3個參數是layer:
out=Image.composite(layer,imageFile,layer)
保存帶有水印的圖片:
out.save(target_file)
print(target_file + 'OK!')
沒添加水印前:
添加水印后:
看了未明這么多期的技能貼,是不是感覺python很強大!
python可能除了不會生孩子,其他的什么都可以了~
原創不易,覺得本篇文章有用的話,請點個贊吧!
總結
以上是生活随笔為你收集整理的python批量添加水印_用Python批量添加水印,提高工作效率!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python保存数据到本地_Python
- 下一篇: python去除空行_python剔除空