2011-04-04 32 views
15

我已經完成了一些挖掘工作,而且我無法找到任何可行的方法來自動爲我的1000多幅圖像添加水印。這可能與irfanview?我在尋找的只是一些基本的透明文字,覆蓋每張圖片。這可以使用命令行來完成嗎?是否有可能更進一步並添加徽標水印?如何通過命令行爲圖像添加水印 - 希望使用Irfanview

如果在這個程序中無法做到這一點,你能推薦任何其他程序而不是irfanview來做到這一點嗎?

回答

24

我推薦使用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

0

這是一個基於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文檔中的文本,然後做了文字的小面積的屏幕截圖與版權落得水印.jpg文件。