Python實現(xiàn)為圖片添加水印的示例詳解
1、引言
小屌絲:魚哥,這個周末過得咋樣
小魚:酸爽~ ~
小屌絲:額~~ 我能想到的,是這樣嗎?

小魚:有多遠你走多遠。
小屌絲:唉,魚哥,你別說,我覺得這個圖片,跟你平時的表情挺貼切的。
小魚:你想咋的?。。?!
小屌絲:突然想到,能不能給你來一個專屬的圖片,例如追加水印啥的,讓別人無圖可盜!!
小魚:嘿~ 你別說,還真的可以哈,
小屌絲:那是, 要不教教我??
小魚:那我的換一個圖片,這個圖片有損我的顏值??!
小屌絲:這真的…
2、filestools介紹
我們平時幾乎都經歷過這種煩惱:
自己拍的很奈斯的照片,發(fā)到朋友圈后,總會被某些匿名好友借用,然而我們卻束手無策。
但是,現(xiàn)在就不用在煩惱了,只要把圖片添加你的專屬logo,別人就不會在征用了。

我們今天要分享的工具,就是filestools,
沒錯,沒看錯,是一個挺狠的第三方庫,這里面的模塊,不少。
我們來看看它的能耐!
2.1 安裝
在使用第三方庫前,都需要經理第一步:
安裝
pip install filestools
如果覺得每次都pip install 費時費力,那就看看小魚這兩篇:
《Python3,選擇Python自動安裝第三方庫,從此跟pip說拜拜??!》
《Python3,我低調的只用一行代碼,就導入Python所有庫!》
2.2 filestools 功能介紹
安裝完成,我們就來介紹一下filestools 都有哪些功能:
- 仿 Linux 樹形目錄顯示 tree 命令;
- 文件差異比較 diff 命令;
- 圖片加水印 marker 命令;
- curl 請求命令轉 python 請求代碼;
2.3 watermarker模塊介紹
我們今天來整的,就是第三個功能:圖片加水印,
add_mark()有8個參數(shù),如下:
- file:圖片文件或圖片文件夾路徑
- mark:要添加的水印內容
- out:添加水印后的結果保存位置,默認生成到 output 文件夾
- color:添加水印后的結果保存位置,默認生成到 output 文件夾
- space:水印直接的間隔, 默認 75 個空格
- angle:水印旋轉角度,默認 30 度
- size:水印字體的大小,默認 50
- opacity:水印的透明度,默認 0.15
2.4 代碼實例
了解了add_mark()參數(shù)后,我們就來演練一下。
#-*- coding: utf-8 -*-
# @Time : 2021-10-24
# @Author : Carl_DJ
from watermarker.marker import add_mark
# 讀取圖片,并設置水印角度,字體大小顏色等
add_mark('D:\Project\xxx\xxx\wtpic.jpg','關注Carl_奕然,學習更多python知識',angle=15,size=25,space=50,color='#c5094d')
我們執(zhí)行,在output 文件夾下,會生成的圖片

生成的圖片放大我看下:

我們在看下原圖:

小屌絲:奈斯了,奈斯了!
小魚:必須的 ~ ~
小屌絲:那剩余的三個功能,啥時候share一下?
小魚:這個… 這個…下次吧!!
補充
Python不僅能實現(xiàn)添加水印,還能為圖片去除水印
下面是實現(xiàn)的核心代碼
import cv2 import numpy as np from PIL import Image import os ? dir = os.getcwd() path = "1.jpg" newPath = "new.jpg" img=cv2.imread(path,1) hight,width,depth=img.shape[0:3] ? #截取 cropped = img[int(hight*0.8):hight, int(width*0.7):width] # 裁剪坐標為[y0:y1, x0:x1] cv2.imwrite(newPath, cropped) imgSY = cv2.imread(newPath,1) ? #圖片二值化處理,把[200,200,200]-[250,250,250]以外的顏色變成0 thresh = cv2.inRange(imgSY,np.array([200,200,200]),np.array([250,250,250])) #創(chuàng)建形狀和尺寸的結構元素 kernel = np.ones((3,3),np.uint8) #擴展待修復區(qū)域 hi_mask = cv2.dilate(thresh,kernel,iterations=10) specular = cv2.inpaint(imgSY,hi_mask,5,flags=cv2.INPAINT_TELEA) cv2.imwrite(newPath, specular) ? #覆蓋圖片 imgSY = Image.open(newPath) img = Image.open(path) img.paste(imgSY, (int(width*0.7),int(hight*0.8),width,hight)) img.save(newPath)
到此這篇關于Python實現(xiàn)為圖片添加水印的示例詳解的文章就介紹到這了,更多相關Python 圖片水印內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python?BeautifulSoup4實現(xiàn)數(shù)據(jù)解析與提取
Beautiful?Soup是一個Python的庫,用于解析HTML和XML文檔,提供了方便的數(shù)據(jù)提取和操作功能,下面小編就來和大家詳細聊聊如何利用BeautifulSoup4實現(xiàn)數(shù)據(jù)解析與提取吧2023-10-10
使用Python生成F分布表并導出為Excel文件的代碼實現(xiàn)
在統(tǒng)計分析中,F FF分布是一種非常重要的連續(xù)概率分布,廣泛應用于方差分析、回歸分析的顯著性檢驗等場景,為了方便查閱和使用F分布的臨界值,本文給大家介紹了使用Python生成F分布表并導出為Excel文件,需要的朋友可以參考下2024-11-11
python中Matplotlib實現(xiàn)繪制3D圖的示例代碼
本篇文章主要介紹了python中Matplotlib實現(xiàn)繪制3D圖的示例代碼,具有一定的參考價值,有興趣的可以了解一下2017-09-09
從零學python系列之數(shù)據(jù)處理編程實例(二)
這篇文章主要介紹了python數(shù)據(jù)處理編程實例,需要的朋友可以參考下2014-05-05

