最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python腳本實現(xiàn)給圖片添加安全斜向水印

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

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

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

腳本功能概覽

該腳本可以實現(xiàn):

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

圖片加水印完整腳本

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

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

def parse_color(color_str):
    """
    解析顏色參數(shù),支持:
    - 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}")


# ------------------- 命令行參數(shù) -------------------
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()

命令行使用方法

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

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

參數(shù)說明

參數(shù)功能默認值
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

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

還可以進一步擴展功能:

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

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

相關文章

  • pycharm設置默認的UTF-8編碼模式的方法詳解

    pycharm設置默認的UTF-8編碼模式的方法詳解

    這篇文章主要介紹了pycharm設置默認的UTF-8編碼模式,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 詳解python?flask是如何預防CSRF攻擊

    詳解python?flask是如何預防CSRF攻擊

    CSRF(Cross-site?request?forgery)攻擊是一種常見的網(wǎng)絡安全漏洞,它可以通過欺騙用戶執(zhí)行惡意請求來攻擊?Web?應用程序,本篇文章將介紹python?flask是如何預防CSRF攻擊,需要的朋友可以參考下
    2024-04-04
  • python可迭代對象去重實例

    python可迭代對象去重實例

    這篇文章主要介紹了python可迭代對象去重實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 利用Python + OpenCV實現(xiàn)遞歸目錄掃描和HTML可視化報告

    利用Python + OpenCV實現(xiàn)遞歸目錄掃描和HTML可視化報告

    在做文檔智能、內容審核、數(shù)據(jù)清洗的時候,經常需要快速判斷一張圖片里有沒有文字,如果圖片數(shù)量成百上千甚至上萬,手動看顯然不現(xiàn)實,今天分享一個純 OpenCV + 簡單圖像特征分析的方案,需要的朋友可以參考下
    2026-02-02
  • 如何解決Python中tqdm和zip一起用進度條不顯示問題

    如何解決Python中tqdm和zip一起用進度條不顯示問題

    這篇文章主要介紹了如何解決Python中tqdm和zip一起用進度條不顯示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python json.dumps中文亂碼問題解決

    python json.dumps中文亂碼問題解決

    這篇文章主要介紹了如何解決python中中文亂碼問題和json.dumps中文亂碼問題,需要的朋友可以參考下
    2021-05-05
  • Python流程控制之條件循環(huán)與異常處理實戰(zhàn)指南

    Python流程控制之條件循環(huán)與異常處理實戰(zhàn)指南

    在Python編程語言中,流程控制語句是構建程序邏輯的基礎構件之一,它們決定了程序中語句的執(zhí)行順序,允許我們創(chuàng)建更加復雜和動態(tài)的代碼結構,這篇文章主要介紹了Python流程控制之條件循環(huán)與異常處理實戰(zhàn)的相關資料,需要的朋友可以參考下
    2026-01-01
  • Python Selenium 之關閉窗口close與quit的方法

    Python Selenium 之關閉窗口close與quit的方法

    今天小編就為大家分享一篇Python Selenium 之關閉窗口close與quit的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python與QT聯(lián)合的詳細步驟記錄

    python與QT聯(lián)合的詳細步驟記錄

    這篇文章主要介紹了python與QT聯(lián)合的詳細步驟,文章還展示了如何在Python中調用QT的.ui文件來實現(xiàn)GUI界面,并介紹了多窗口的應用,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • numpy np.newaxis 的實用分享

    numpy np.newaxis 的實用分享

    今天小編就為大家分享一篇numpy np.newaxis 的實用分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評論

且末县| 建湖县| 长治县| 班戈县| 土默特左旗| 日照市| 称多县| 九台市| 常宁市| 莎车县| 永昌县| 台南市| 改则县| 滦平县| 千阳县| 陇川县| 潍坊市| 调兵山市| 马尔康县| 东源县| 淮南市| 合作市| 邯郸县| 永仁县| 乐陵市| 灵台县| 陆良县| 玉门市| 商丘市| 乐陵市| 卓资县| 武义县| 仁布县| 金湖县| 南通市| 江津市| 沾化县| 观塘区| 西峡县| 西和县| 马鞍山市|