「工具」Semi-Utils 介绍

这是一个用于给照片批量添加水印的工具。

项目地址: https://github.com/leslievan/semi-utils

Windows 下载地址:点击 ⬇️ 下载

QQ 交流群: 793070860

效果展示

布局: normal布局: normal(Logo 居右)布局: normal(黑红配色)
布局: normal(黑红配色,Logo 居右)布局: normal(自定义配置)布局: 1:1填充
布局: 简洁布局: 背景模糊布局: 背景模糊+白框

使用方法

Windows

image-20230507072854424

  1. 这里 下载软件后解压,比如解压到 D:\semi-utils
  2. 将需要添加水印的图片复制到 D:\semi-utils\input 文件夹中
  3. 双击 D:\semi-utils\main.exe 运行程序
  4. 按照提示输入 y或回车 开始执行
  5. 处理好的图片存放在 D:\semi-utils\output

macOS/Linux

使用 git

  • 安装需要的依赖(正式运行前执行一次即可)

    打开命令行/终端,输入:

    1# 使用 git 将代码下载到本地,比如 ~/semi-utils,如果要下载到其他路径替换掉下面命令中的路径即可
    2git clone --depth 1 https://github.com/leslievan/semi-utils.git ~/semi-utils
    3cd ~/semi-utils
    4chmod +x install.sh
    5./install.sh
    

    你可以按下 command+空格键,打开 Spotlight 搜索栏,在搜索栏中输入 终端 即可。

    如果命令运行出错可以参考 常见问题

  • 将需要添加水印的图片复制到 ~/semi-utils/input 文件夹中

  • 打开命令行/终端,输入

    1cd ~/semi-utils
    2python3 ~/semi-utils/main.py
    
  • 按照提示输入 y或回车 开始执行

  • 处理好的图片存放在 ~/semi-utils/output

手动下载

  • 下载 源码 后解压,比如解压到 ~/semi-utils,路径需要自行替换。

    你可以右键单击解压后的文件夹,按住 Opt 键-选择将xxx拷贝为路径名称 ,用剪贴板中的实际路径替换下面命令中的 ~/semi-utils.

  • 安装需要的依赖(正式运行前执行一次即可)

    打开命令行/终端,输入:

    1cd ~/semi-utils
    2chmod +x install.sh
    3./install.sh
    

    你可以按下 command+空格键,打开 Spotlight 搜索栏,在搜索栏中输入 终端 即可。

    如果命令运行出错可以参考 常见问题

  • 将需要添加水印的图片复制到 ~/semi-utils/input 文件夹中

  • 打开命令行/终端,输入

    1cd ~/semi-utils
    2python3 ~/semi-utils/main.py
    
  • 按照提示输入 y或回车 开始执行

  • 处理好的图片存放在 ~/semi-utils/output

配置项

通过 config.yaml 配置。

  1base:
  2  alternative_bold_font: ./fonts/Roboto-Medium.ttf
  3  alternative_font: ./fonts/Roboto-Regular.ttf
  4  # 粗体
  5  bold_font: ./fonts/AlibabaPuHuiTi-2-85-Bold.otf
  6  # 粗体字体大小
  7  bold_font_size: 1
  8  # 常规字体
  9  font: ./fonts/AlibabaPuHuiTi-2-45-Light.otf
 10  # 常规字体大小
 11  font_size: 1
 12  # 输入文件夹
 13  input_dir: ./input
 14  # 输出文件夹
 15  output_dir: ./output
 16  # 输出图片质量,如果你觉得输出图片的体积过大,比如一张20M的图片,处理后变成了40M,那么你可以通过适当降低输出质量来减小图片体积
 17  quality: 100
 18global: # 全局设置,你可以在命令行中通过【更多设置】来修改这些设置
 19  focal_length:
 20    # 是否使用等效焦距
 21    use_equivalent_focal_length: false
 22  padding_with_original_ratio:
 23    # 是否使用原始图片的宽高比来填充白边
 24    enable: false
 25  shadow:
 26    # 是否使用阴影
 27    enable: false
 28  white_margin:
 29    # 是否使用白边
 30    enable: true
 31    # 白边宽度
 32    width: 3
 33layout:
 34  # 背景颜色,仅在布局为 normal(自定义)时有效
 35  background_color: '#ffffff'
 36  elements:
 37    # 左下角元素
 38    left_bottom:
 39      # 左下角文字颜色,仅在布局为 normal(自定义)时有效
 40      color: '#757575'
 41      # 是否使用粗体,仅在布局为 normal(自定义)时有效
 42      is_bold: false
 43      # 左下角文字内容,可选项参考下表
 44      name: Model
 45    # 下面三个元素的设置和上面是类似的
 46    left_top:
 47      color: '#212121'
 48      is_bold: true
 49      name: LensModel
 50    right_bottom:
 51      color: '#757575'
 52      is_bold: false
 53      name: Datetime
 54      value: Photo by NONE
 55    right_top:
 56      color: '#212121'
 57      is_bold: true
 58      name: Param
 59  # 是否使用 Logo,仅在布局为 normal(自定义)时有效,可选项为 true、false
 60  logo_enable: false
 61  # Logo 位置,仅在布局为 normal(自定义)时有效,可选项为 left、right
 62  logo_position: left
 63  # 布局类型,可选项参考下表,你可以在命令行中通过【布局】来修改它
 64  type: watermark_right_logo
 65logo:
 66  makes:
 67    canon: # 标识,用户自定义,不要重复
 68      id: Canon # 厂商名称,从 exif 信息中获取,和 exif 信息中的 Make 字段一致即可
 69      path: ./logos/canon.png # Logo 路径
 70    # 下同
 71    fujifilm:
 72      id: FUJIFILM
 73      path: ./logos/fujifilm.png
 74    hasselblad:
 75      id: HASSELBLAD
 76      path: ./logos/hasselblad.png
 77    huawei:
 78      id: HUAWEI
 79      path: ./logos/xmage.jpg
 80    leica:
 81      id: leica
 82      path: ./logos/leica_logo.png
 83    nikon:
 84      id: NIKON
 85      path: ./logos/nikon.png
 86    olympus:
 87      id: Olympus
 88      path: ./logos/olympus_blue_gold.png
 89    panasonic:
 90      id: Panasonic
 91      path: ./logos/panasonic.png
 92    pentax:
 93      id: PENTAX
 94      path: ./logos/pentax.png
 95    ricoh:
 96      id: RICOH
 97      path: ./logos/ricoh.png
 98    sony:
 99      id: SONY
100      path: ./logos/sony.png

Layout.Element.Name 可选项

可选项描述
Model相机型号(eg. Nikon Z7)
Make相机厂商(eg. Nikon)
LensModel镜头型号(eg. Nikkor 24-70 f/2.8)
Param拍摄参数(eg. 50mm f/1.8 1/1000s ISO 100)
Datetime拍摄时间(eg. 2023-01-01 12:00)
Date拍摄日期(eg. 2023-01-01)
Custom自定义
None
LensMake_LensModel镜头厂商 + 镜头型号(eg. Nikon Nikkor 24-70 f/2.8)
CameraModel_LensModel相机型号 + 镜头型号(eg. Nikon Z7 Nikkor 24-70 f/2.8)
TotalPixel总像素(MP)
CameraMake_CameraModel相机厂商 + 相机型号(eg. DJI FC123)

Layout.Type 可选项

可选项描述效果
watermark_left_logonormal1
watermark_right_logonormal(Logo 居右)2
dark_watermark_left_logonormal(黑红配色)3
dark_watermark_right_logonormal(黑红配色,Logo 居右)4
custom_watermarknormal(自定义配置)5
square1:1填充6
simple简洁7
background_blur背景模糊8
background_blur_with_white_border背景模糊+白框9

常见问题

运行 pip install 时提示 command not found

可能是因为没有安装 Python3,可以通过以下几种方式安装 Python3。

  1. 使用 Homebrew 安装。

    Homebrew 是 Mac 上的软件包管理器,可以轻松地安装许多应用程序和服务。

    • 如果你已经安装了 brew,打开终端并输入以下命令来安装 Python3:

      1brew install python3
      

      如果这条命令提示 command not found,代表你没有安装 brew,跳转下一步。

    • 如果你没有安装 brew,打开终端并输入以下命令来安装 Homebrew:

      1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      

      然后输入以下命令来安装 Python3:

      1brew install python3
      
  2. 使用 dmg 包安装

    你可以从 Python 官网 下载 Python3 的安装包,选择 Stable Release 下的任一版本即可,推荐 3.10.11,然后打开下载好的安装包按照提示安装即可。

验证安装

安装完成后,可以使用以下命令来验证 Python3 是否正确安装:

1python3 --version

此命令将返回已安装的 Python3 版本号。


输出的水印都是“无”

如果输出的图片类似这种:

未命名大

这意味着照片中没有包含元信息。如果使用PS进行导出操作,可以选择文件-导出-存储为Web所用格式(旧版),采用默认设置,并选择“元数据-全部”即可。

其他问题

  1. 为什么添加水印后的 jpg 图片出现了偏色的情况?

    目前只支持 sRGB 的颜色空间,如果选择 AdobeRGB 或 DCI-P3 颜色空间导出会产生偏色的现象。

  2. 为什么使用 PS/美图秀秀导出的图片没有数据?

    部分软件导出时默认会移除照片元信息,比如,如果是用ps导出,需要“文件-导出-存储为web所用格式(旧版)Alt shift Ctrl s 默认设置即可 元数据选全部”

  3. 如何移除左右两边的边框?

    在”更多设置-白框“中可以选择是否添加全包围的白色边框。

  4. 如何给照片添加阴影?

    在“更多设置-阴影”中可以选择是否给照片添加阴影。

  5. 照片导出后的比例变了,如何保持照片的比例不变?

    在“更多设置-按比例填充”可以选择是否用白色像素填充成原始比例。

  6. 如何修改默认字体?

    使用记事本或 VSCode 等工具打开 config.yaml,按照视频分 P 中的“自定义字体”修改相关配置。

    或从视频简介中的”使用文档“查看详细介绍。

  7. 如何修改字体颜色,可以自定义配色吗?

    支持自定义字体颜色或背景颜色,可以通过视频简介中的”使用文档-配置项“查看详细介绍。

  8. 为什么导出的照片时间变成今天了?不可以用当时的拍摄时间吗?