欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)給圖片添加文字或圖片水印

 更新時間:2023年05月06日 08:58:31   作者:逃逸的卡路里  
在現(xiàn)今的數(shù)字化時代,網(wǎng)絡(luò)上的圖片泛濫,盜圖現(xiàn)象也越來越嚴重。因此,在發(fā)布文章時,為了保護自己的原創(chuàng)作品版權(quán),很多人選擇使用水印來保護他們的圖片。本文就和大家分享了Python實現(xiàn)給圖片添加文字或圖片水印的方法,需要的可以收藏一下

前言

圖片加水印有什么好處?在現(xiàn)今的數(shù)字化時代,網(wǎng)絡(luò)上的圖片泛濫,盜圖現(xiàn)象也越來越嚴重。因此,在發(fā)布文章時,為了保護自己的原創(chuàng)作品版權(quán),很多人選擇使用水印來保護他們的圖片。這樣就能更好地做到:

1.版權(quán)保護:在商業(yè)用途的照片中添加水印可以幫助保護作者的版權(quán),防止他人未經(jīng)授權(quán)使用照片。

2.品牌推廣:將商業(yè)品牌、商標或公司標志添加到照片中,可以幫助提高品牌知名度和曝光率。

3.防止盜版:添加水印可以防止盜版和未經(jīng)授權(quán)的使用,因為水印會明顯表明該照片的版權(quán)歸原作者所有。

4.標識來源:在社交媒體平臺上分享照片時,添加水印可以幫助其他用戶識別出照片的來源和作者。

5.保護隱私:在一些情況下,添加水印可以幫助保護照片中的個人隱私,特別是在共享照片時,可能會有人試圖使用照片來濫用或傷害個人隱私。

當(dāng)然防止濫用是最主要的,我是這么覺得。

PIL的Image模塊的基本介紹

Pillow 是 Python 中較為基礎(chǔ)的圖像處理庫,主要用于圖像的基本處理,比如裁剪圖像、調(diào)整圖像大小和圖像顏色處理等。與 Pillow 相比,OpenCV 和 Scikit-image 的功能更為豐富,所以使用起來也更為復(fù)雜,主要應(yīng)用于機器視覺、圖像分析等領(lǐng)域,比如眾所周知的“人臉識別”應(yīng)用 。

Image模塊:

Image模塊是PIL最基本的模塊,其中導(dǎo)出了Image類,一個Image類實例對象就對應(yīng)了一副圖像。同時,Image模塊還提供了很多有用的函數(shù)。

這里只是初步學(xué)習(xí)了一些用法與實際操作。

基礎(chǔ)函數(shù)簡介
open()打開圖片
save(“test.gif”,“GIF”)保存(新圖片路徑和名稱,保存格式)
show()顯示圖片
size是img圖片對象的成員數(shù)據(jù),是一個元組,包含了像素寬度和像素高度
Image.new()生成新的圖片
getpixel((1,1))獲取像素點(1,1)三通道信息
putpixel()設(shè)置像素點三通道信息

Python代碼實現(xiàn)文字水印

下面咱們用Python代碼講解下怎么批量給圖片添加水印,并用代碼實現(xiàn)。

這里使用.png圖片格式

'''
  如何批量為圖片添加文字水印
'''
from PIL import Image, ImageDraw, ImageFont,ImageEnhance
path=input('請輸入要添加水印的圖片所在路徑:')
text=input('請輸入水印文字:')
positionflag=int(input('請輸入水印位置(0:左上角,1:左下角,2:右上角,3:右下角,4:居中):'))
alphavalue=float(input('請輸入水印透明度(范圍在0——1之間的1位小數(shù)):'))
#設(shè)置所使用的字體
font = ImageFont.truetype(r'simkai.ttf', 24)
# 文字水印
def textMark(img):
    try:
        im = Image.open(img).convert('RGBA') # 打開原始圖片,并轉(zhuǎn)換為RGB
        newImg = Image.new('RGBA', im.size, (255, 255, 255, 0)) # 存儲添加水印后的圖片
        imagedraw = ImageDraw.Draw(newImg) # 創(chuàng)建繪制對象
        imgwidth, imgheight = im.size # 記錄圖片大小
        txtwidth=font.getsize(text)[0] # 獲取字體寬度
        txtheight = font.getsize(text)[1] # 獲取字體高度
        # 設(shè)置水印文字位置
        if positionflag == 0: # 左上角
            position=(0,0)
        elif  positionflag == 1: # 左下角
             position=(0,imgheight - txtheight)
        elif  positionflag == 2: # 右上角
            position=(imgwidth - txtwidth,0)
        elif  positionflag == 3: # 右下角
            position=(imgwidth - txtwidth, imgheight - txtheight)
        elif  positionflag == 4: # 居中
            position=(imgwidth/2,imgheight/2)
        # 繪制文字
        imagedraw.text(position, text, font=font, fill="red")
        # 設(shè)置透明度
        alpha = newImg.split()[3]
        alpha = ImageEnhance.Brightness(alpha).enhance(alphavalue)
        newImg.putalpha(alpha)
        Image.alpha_composite(im, newImg).save(img,'png') # 保存圖片
    except Exception as e:
        print(e)
import os
try:
    list = os.listdir(path)  # 遍歷選擇的文件夾
    for i in range(0, len(list)):  # 遍歷文件列表
        filepath = os.path.join(path, list[i])  # 記錄遍歷到的文件名
        if os.path.isfile(filepath):  # 判斷是否為文件
            filetype = os.path.splitext(filepath)[1]  # 獲取擴展名
            if filetype == '.png':  # 判斷是否為.png
                textMark(filepath) # 批量添加文字水印
    print('批量添加水印完成')
except:
    print('請輸入一個有效路徑……')

左上角添加水印,圖例展示:

Python代碼實現(xiàn)圖片水印

from PIL import Image
path=input('請輸入要添加水印的圖片所在路徑:')
imgpath=input('請輸入要作為水印圖片的路徑:')
positionflag=int(input('請輸入水印位置(0:左上角,1:左下角,2:右上角,3:右下角,4:居中):'))
alphavalue=int(input('請輸入水印透明度(范圍在1——10之間):'))
# 圖片水印
def imgMark(img):
    im = Image.open(img) # 打開原始圖片
    mark = Image.open(imgpath) # 打開水印圖片
    rgbaim = im.convert('RGBA') # 將原始圖片轉(zhuǎn)換為RGBA
    rgbamark = mark.convert('RGBA') # 將水印圖片轉(zhuǎn)換為RGBA
    imgwidth, imgheight = rgbaim.size # 獲取原始圖片尺寸
    nimgwidth, nimgheight = rgbamark.size # 獲取水印圖片尺寸
    # 縮放水印圖片
    scale = 10
    markscale = max(imgwidth / (scale * nimgwidth), imgheight / (scale * nimgheight))
    newsize = (int(nimgwidth * markscale), int(nimgheight * markscale)) # 計算新的尺寸大小
    rgbamark = rgbamark.resize(newsize, resample=Image.ANTIALIAS) # 重新設(shè)置水印圖片大小
    nimgwidth, nimgheight = rgbamark.size # 獲取水印圖片縮放后的尺寸
    # 設(shè)置水印文字位置
    if positionflag == 0:  # 左上角
        position = (0, 0)
    elif positionflag == 1:  # 左下角
        position = (0, imgheight - nimgheight)
    elif positionflag == 2:  # 右上角
        position = (imgwidth - nimgwidth, 0)
    elif positionflag == 3:  # 右下角
        position = (imgwidth - nimgwidth, imgheight - nimgheight)
    elif positionflag == 4:  # 居中
        position = (int(imgwidth / 2), int(imgheight / 2))
    # 設(shè)置透明度:img.point(function)接受一個參數(shù),且對圖片中的每一個點執(zhí)行這個函數(shù),這個函數(shù)是一個匿名函數(shù),使用lambda表達式來完成
    # convert()函數(shù),用于不同模式圖像之間的轉(zhuǎn)換,模式“L”為灰色圖像,它的每個像素用8個bit表示,0表示黑,255表示白,其他數(shù)字表示不同的灰度。
    # 在PIL中,從模式“RGB”轉(zhuǎn)換為“L”模式是按照下面的公式轉(zhuǎn)換的:L = R * 299/1000 + G * 587/1000+ B * 114/1000
    rgbamarkpha = rgbamark.convert("L").point(lambda x: x/alphavalue)
    rgbamark.putalpha(rgbamarkpha)
    # 水印位置
    rgbaim.paste(rgbamark, position, rgbamarkpha)
    rgbaim.save(img) # 保存水印圖片
import os
try:
    list = os.listdir(path)  # 遍歷選擇的文件夾
    for i in range(0, len(list)):  # 遍歷文件列表
        filepath = os.path.join(path, list[i])  # 記錄遍歷到的文件名
        if os.path.isfile(filepath):  # 判斷是否為文件
            filetype = os.path.splitext(filepath)[1]  # 獲取擴展名
            if filetype == '.png':  # 判斷是否為.png
                imgMark(filepath) # 批量添加圖片水印
    print('批量添加水印完成')
except Exception as e:
    print(e)

左下角添加圖片水印,圖例展示:

以上就是Python實現(xiàn)給圖片添加文字或圖片水印的詳細內(nèi)容,更多關(guān)于Python圖片添加水印的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python將腳本程序轉(zhuǎn)變?yōu)榭蓤?zhí)行程序的實現(xiàn)

    Python將腳本程序轉(zhuǎn)變?yōu)榭蓤?zhí)行程序的實現(xiàn)

    本文主要介紹了Python將腳本程序轉(zhuǎn)變?yōu)榭蓤?zhí)行程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 經(jīng)驗豐富程序員才知道的8種高級Python技巧

    經(jīng)驗豐富程序員才知道的8種高級Python技巧

    這篇文章主要介紹了經(jīng)驗豐富程序員才知道的8種高級Python技巧,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 一次性徹底講透Python中pd.concat與pd.merge

    一次性徹底講透Python中pd.concat與pd.merge

    本文主要介紹了一次性徹底講透Python中pd.concat與pd.merge,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • python?playwrigh框架入門安裝使用

    python?playwrigh框架入門安裝使用

    這篇文章主要為大家介紹了python?playwrigh框架入門的安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • python web基礎(chǔ)之加載靜態(tài)文件實例

    python web基礎(chǔ)之加載靜態(tài)文件實例

    下面小編就為大家分享一篇python web基礎(chǔ)之加載靜態(tài)文件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Python中的defaultdict與__missing__()使用介紹

    Python中的defaultdict與__missing__()使用介紹

    下面這篇文章主要給大家介紹了關(guān)于Python中defaultdict使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • python Windows最新版本安裝教程

    python Windows最新版本安裝教程

    這篇文章主要介紹了python Windows最新版本安裝教程,是python的詳細安裝教程和環(huán)境變量的配置,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-02-02
  • python實現(xiàn)自動發(fā)送報警監(jiān)控郵件

    python實現(xiàn)自動發(fā)送報警監(jiān)控郵件

    這篇文章主要為大家詳細介紹了python實現(xiàn)自動發(fā)送報警監(jiān)控郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python計算列表內(nèi)各元素的個數(shù)實例

    python計算列表內(nèi)各元素的個數(shù)實例

    今天小編就為大家分享一篇python計算列表內(nèi)各元素的個數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Lombok插件安裝(IDEA)及配置jar包使用詳解

    Lombok插件安裝(IDEA)及配置jar包使用詳解

    這篇文章主要介紹了Lombok插件安裝(IDEA)及配置jar包使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論