我做了一些挖掘,但我找不到任何可行的方法来自动为我的1000多张图像添加水印。这可能与irfanview?我正在寻找的只是覆盖每个图像的一些基本透明文本。可以使用命令行完成吗?是否可以更进一步添加徽标水印?
如果在此程序中无法执行此操作,您是否可以推荐任何其他程序而不是irfanview。
答案 0 :(得分:29)
我建议使用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。
答案 1 :(得分: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文档中创建了文本,然后对文本的小区域进行了屏幕截图,最终得到了copyright.jpg文件。