【问题标题】:How to add watermarks to images via command line - Hopefully using Irfanview如何通过命令行为图像添加水印 - 希望使用 Irfanview
【发布时间】:2017-01-09 03:56:37
【问题描述】:

我已经进行了一些挖掘,但我无法找到任何可行的方法来自动为我的 1000 多张图像添加水印。这可能与 irfanview 吗?我正在寻找的只是覆盖在每个图像上的一些基本透明文本。这可以使用命令行完成吗?是不是可以更进一步,加个logo水印?

如果在这个程序中不可能做到这一点,你能否推荐任何其他程序而不是 irfanview 来做到这一点。

【问题讨论】:

    标签: image-processing command-line watermark


    【解决方案1】:

    我推荐使用ImageMagick,它是开源的,非常适合在命令行上处理图像。

    图片加水印很简单

    composite -dissolve 30% -gravity south watermark.jpg input-file.jpg output-file.jpg
    

    如果有文字,则为a little more complicated but possible

    以上述命令为例,对文件夹中所有文件执行此操作的 Bash 命令为:

    for pic in *.jpg; do
        composite -dissolve 30% -gravity south watermark.jpg $pic ${pic//.jpg}-marked.jpg
    done
    

    有关使用 ImageMagick 添加水印的更多信息,请参阅ImageMagick v6 Examples

    【讨论】:

      【解决方案2】:

      这是一个基于 ImageMagik 建议的快速 Python 脚本。

      #!/usr/bin/env python
      # encoding: utf-8
      
      import os
      import argparse
      
      def main():
          parser = argparse.ArgumentParser(description='Add watermarks to images in path')
          parser.add_argument('--root', help='Root path for images', required=True, type=str)
          parser.add_argument('--watermark', help='Path to watermark image', required=True, type=str)
          parser.add_argument('--name', help='Name addition for watermark', default="-watermark", type=str)
          parser.add_argument('--extension', help='Image extensions to look for', default=".jpg", type=str)
          parser.add_argument('--exclude', help='Path content to exclude', type=str)
      
          args = parser.parse_args()
      
          files_processed = 0
          files_watermarked = 0
          for dirName, subdirList, fileList in os.walk(args.root):
              if args.exclude is not None and args.exclude in dirName:
                  continue
              #print('Walking directory: %s' % dirName)
              for fname in fileList:
                  files_processed += 1
                  #print('  Processing %s' % os.path.join(dirName, fname))
                  if args.extension in fname and args.watermark not in fname and args.name not in fname:
                      ext = '.'.join(os.path.basename(fname).split('.')[1:])
                      orig = os.path.join(dirName, fname)
                      new_name = os.path.join(dirName, '%s.%s' % (os.path.basename(fname).split('.')[0] + args.name, ext))
                      if not os.path.exists(new_name):
                          files_watermarked += 1
                          print('    Convert %s to %s' % (orig, new_name))
                          os.system('composite -dissolve 30%% -gravity SouthEast %s "%s" "%s"' % (args.watermark, orig, new_name))
      
          print("Files Processed: %s" % "{:,}".format(files_processed))
          print("Files Watermarked: %s" % "{:,}".format(files_watermarked))
      
      
      if __name__ == '__main__':
          main()
      

      像这样运行它:

      ./add_watermarks.py --root . --watermark copyright.jpg --exclude marketplace
      

      为了创建水印,我刚刚在 Word 文档中创建了文本,然后对文本的一小部分区域进行了屏幕截图,最终得到了一个 copyright.jpg 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-22
        • 2021-10-15
        • 2016-11-15
        • 2018-12-02
        • 1970-01-01
        相关资源
        最近更新 更多