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

Python腳本實現給圖片添加安全斜向水印

 更新時間:2025年08月27日 08:34:20   作者:Vic_wkx  
在日常工作中,證件照片的安全性至關重要,本文和大家分享了一個Python 腳本,用于給圖片添加斜向平鋪水印,有效防止信息泄露或濫用,希望對大家有所幫助

在日常工作中,我們經常需要上傳身份證或者其他證件照片用于實名認證、開戶或者授權。直接上傳原圖存在 信息泄露風險,一旦圖片被他人濫用,可能導致很多問題。

解決方法之一就是給圖片加 斜向水印,保證水印既覆蓋關鍵區(qū)域,又不會破壞原圖的可讀性。本文將介紹一個 Python 腳本,可以輕松實現斜向平鋪水印,并支持命令行參數自定義文字、顏色、透明度等。

腳本功能概覽

該腳本可以實現:

  • 斜向平鋪水印,防止裁剪后水印被去除
  • 文字可自定義,可帶日期或用途說明
  • 字體大小、間距、旋轉角度、透明度可調
  • 文字顏色可自定義(支持 RGB 和 HEX)
  • 命令行調用,支持 -h 查看使用說明和示例

圖片加水印完整腳本

需求理清楚了,接下來讓 AI 幫忙寫一個 Python 腳本就行了:

import argparse
from PIL import Image, ImageDraw, ImageFont
import datetime

def parse_color(color_str):
    """
    解析顏色參數,支持:
    - RGB格式:255,0,0
    - HEX格式:#FF0000
    """
    color_str = color_str.strip()
    if color_str.startswith("#") and len(color_str) == 7:
        r = int(color_str[1:3], 16)
        g = int(color_str[3:5], 16)
        b = int(color_str[5:7], 16)
        return (r, g, b)
    else:
        parts = color_str.split(",")
        if len(parts) != 3:
            raise ValueError("顏色格式錯誤,應為R,G,B或#RRGGBB")
        return tuple(int(p) for p in parts)

def add_slanted_watermark(
    input_path, output_path, text=None,
    opacity=90, angle=30, spacing=150, font_scale=25, color=(255,0,0)
):
    """
    給圖片添加斜向平鋪水印
    """
    # 打開原圖
    image = Image.open(input_path).convert("RGBA")
    width, height = image.size

    # 默認文字
    if text is None:
        today = datetime.date.today().strftime("%Y-%m-%d")
        text = f"僅供實名認證使用 {today}"

    # 字體大小
    try:
        font = ImageFont.truetype("msyh.ttc", int(width / font_scale))
    except:
        font = ImageFont.load_default()

    # 創(chuàng)建大畫布
    diagonal = int((width**2 + height**2) ** 0.5) * 2
    watermark = Image.new("RGBA", (diagonal, diagonal), (0, 0, 0, 0))
    draw = ImageDraw.Draw(watermark)

    # 測量文字大小
    bbox = draw.textbbox((0, 0), text, font=font)
    text_width, text_height = bbox[2] - bbox[0], bbox[3] - bbox[1]

    # 平鋪文字
    for y in range(0, diagonal, text_height + spacing):
        for x in range(0, diagonal, text_width + spacing):
            draw.text((x, y), text, fill=color + (opacity,), font=font)

    # 旋轉水印
    watermark = watermark.rotate(angle, expand=1)

    # 裁剪回原圖大小
    x = (watermark.width - width) // 2
    y = (watermark.height - height) // 2
    watermark = watermark.crop((x, y, x + width, y + height))

    # 合成
    combined = Image.alpha_composite(image, watermark)
    combined.convert("RGB").save(output_path, "JPEG")
    print(f"? 水印已添加: {output_path}")


# ------------------- 命令行參數 -------------------
def main():
    example_text = """示例調用:
  # 默認紅色水印
  python watermark.py img.png out.jpg -t "僅供XX銀行使用 2025-08-26"

  # 自定義灰色水印
  python watermark.py img.png out.jpg -t "僅供XX銀行使用" --color 128,128,128

  # 自定義藍色HEX水印
  python watermark.py img.png out.jpg --color #0000FF --opacity 100 --angle 45 --font_scale 30 --spacing 120
"""
    parser = argparse.ArgumentParser(
        description="在圖片上添加斜向平鋪水印,可自定義文字、字體大小、間距、角度、透明度、顏色。",
        epilog=example_text,
        formatter_class=argparse.RawDescriptionHelpFormatter
    )
    parser.add_argument("input", help="輸入圖片路徑(jpg/png)")
    parser.add_argument("output", help="輸出圖片路徑(jpg)")
    parser.add_argument("-t", "--text", default=None, help="水印文字(默認帶日期)")
    parser.add_argument("--opacity", type=int, default=90, help="文字透明度 0-255,默認90")
    parser.add_argument("--angle", type=float, default=30, help="水印旋轉角度,默認30°")
    parser.add_argument("--spacing", type=int, default=150, help="水印行列間距,默認150px")
    parser.add_argument("--font_scale", type=float, default=25, help="字體大小比例:圖片寬度/字體大小,默認25")
    parser.add_argument("--color", default="255,0,0", help="文字顏色 RGB格式: R,G,B 或 HEX: #RRGGBB, 默認紅色")

    args = parser.parse_args()

    color = parse_color(args.color)

    add_slanted_watermark(
        input_path=args.input,
        output_path=args.output,
        text=args.text,
        opacity=args.opacity,
        angle=args.angle,
        spacing=args.spacing,
        font_scale=args.font_scale,
        color=color
    )


if __name__ == "__main__":
    main()

命令行使用方法

腳本支持 命令行參數,可以在調用時靈活調整:

python watermark.py input.jpg output.jpg -t "僅供XX銀行使用 2025-08-26" \
    --color 255,0,0 --opacity 90 --angle 30 --font_scale 25 --spacing 150

參數說明

參數功能默認值
input輸入圖片路徑(jpg/png)必填
output輸出圖片路徑必填
-t / --text水印文字默認“僅供實名認證使用 + 當前日期”
--opacity水印透明度 0-25590
--angle水印旋轉角度30°
--spacing文字間距150px
--font_scale字體大小比例,圖片寬度/字體大小25
--color文字顏色 RGB 或 HEX255,0,0

調用示例

# 默認紅色水印
python watermark.py img.png out.jpg -t "僅供XX銀行使用 2025-08-26"

# 自定義灰色水印
python watermark.py img.png out.jpg -t "僅供XX銀行使用" --color 128,128,128

# 自定義藍色HEX水印
python watermark.py img.png out.jpg --color #0000FF --opacity 100 --angle 45 --font_scale 30 --spacing 120

通過這個腳本,你可以輕松為身份證、證件照或者任何圖片添加 安全、斜向、可定制的水印。這種方式不僅能保護隱私,還能防止證件被濫用。

還可以進一步擴展功能:

  • 自動適配字體大小和間距,根據圖片尺寸動態(tài)調整水印密度
  • 交替斜向水印,模擬防偽底紋效果
  • 批量處理文件夾中的圖片

到此這篇關于Python腳本實現給圖片添加安全斜向水印的文章就介紹到這了,更多相關Python圖片添加水印內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python安裝Pandas庫的兩種方法

    Python安裝Pandas庫的兩種方法

    本文介紹了三種安裝Python?Pandas庫的方法,通過cmd命令行安裝并解決版本沖突,手動下載whl文件安裝,更換國內鏡像源加速下載,最后建議用pip?list驗證安裝結果,每種方法給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-08-08
  • pandas進行數據輸入和輸出的方法詳解

    pandas進行數據輸入和輸出的方法詳解

    這篇文章主要為大家詳細介紹了pandas進行數據輸入和輸出的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python處理.nfo文件格式的完整教程

    Python處理.nfo文件格式的完整教程

    .nfo 文件是媒體文件的元數據容器,通常用于存儲電影、電視劇、音樂等多媒體信息的結構化數據,它們本質上是 XML 格式的文本文件,包含如標題、演員、劇情簡介等關鍵信息,本文給大家詳細介紹了Python處理.nfo文件格式的完整教程,需要的朋友可以參考下
    2025-07-07
  • Python后臺開發(fā)Django的教程詳解(啟動)

    Python后臺開發(fā)Django的教程詳解(啟動)

    這篇文章主要介紹了Python后臺開發(fā)Django(啟動),本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-04-04
  • 基于Python實現文件處理程序

    基于Python實現文件處理程序

    這篇文章主要為大家詳細介紹了如何基于Python實現一個簡單的文件處理程序,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • python利用pandas分析學生期末成績實例代碼

    python利用pandas分析學生期末成績實例代碼

    pandas是數據分析師最常用的工具之一,這篇文章主要給大家介紹了關于python如何利用pandas分析學生期末成績的相關資料,文中給出了詳細的實現方法,需要的朋友可以參考下
    2021-07-07
  • 使用Python創(chuàng)建帶邊框樣式的Word表格的代碼實現

    使用Python創(chuàng)建帶邊框樣式的Word表格的代碼實現

    在生成Word文檔時,表格的邊框樣式是提升專業(yè)度的重要細節(jié)本文將通過一個實例,展示如何使用python-docx庫為表格添加上下邊框加粗和內部邊框隱藏的復雜樣式,感興趣的小伙伴跟著小編一起來看看吧
    2025-04-04
  • pyecharts如何旋轉折線圖的X軸標簽

    pyecharts如何旋轉折線圖的X軸標簽

    這篇文章主要介紹了pyecharts如何旋轉折線圖的X軸標簽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python requests指定出口ip的例子

    python requests指定出口ip的例子

    今天小編就為大家分享一篇python requests指定出口ip的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python+Tesseract OCR實現截屏識別文字

    python+Tesseract OCR實現截屏識別文字

    pytesseract Python常用pytesseract進行圖片上的文字識別,本文主要介紹了python+Tesseract?OCR實現截屏識別文字,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11

最新評論