我有超过500张图片,我需要水印与文字将是不同的每一个图像。例如,如果我有一个建筑物的图片,我想水印这个建筑物的名称或地址。
我有保存在具有图像文件名的Excel文件中的唯一信息。
现在,在搜索了过去的三天,我还没有遇到一个工具,可以批处理水印独特的文字为每一张图片。
我主要是在Windows上运行,我很乐意使用命令行来完成这个过程。我也愿意花一些钱在一个工具上这样做,所以它不需要是免费的和/或开源的。
发布于 2014-03-08 17:29:10
您可以使用批处理文件中的ImageMagick转换命令来完成这一任务--它将允许您将文本应用于文件、转换类型、rescale等,所有这些操作都是在一个操作中完成的--它也是免费的。
例如convert rose.jpg -draw "text 25,60 'By Any Other Name'" outdir/rose.jpg
或者,您可以使用python、PIL ( python )或枕头 (PIL的一个分支)和xlrd自动完成整个工作,包括从excel文件中读取。这些也是免费的工具,但你需要更多的学习。我强烈建议在尝试对其进行任何操作之前对所有图像进行备份。
我只想补充一下,我在上面的回答中提到的一些关于最初问题的评论是:
- [**Python**](http://www.python.org/) _Programming Language_:
- Windows binaries available
- Usually already installed on OS(S), Linux, Unix & many others
- Ditto the source source
- [**PIL**](http://www.pythonware.com/products/pil/)**/**[**Pillow**](https://pypi.python.org/pypi/Pillow/2.5.1#downloads) _Image Manipulation Library_:
- Binaries available for Windows
- Installed from source if you have Python/PIP on other platforms
- [**XLRD**](http://www.python-excel.org/) _Python Excel Reader Library_
- Source distribution works on any python platform
发布于 2015-12-02 22:05:16
也许太迟了,但我在两周前偶然发现了这个问题,并通过编写代码找到了一个解决方案:
我设法用bulkWaterMark和.NET解决了一个类似的问题,您可以通过一个叫做表达式的特性来对动态文本进行水印。我使用了该工具的免费版本,并编写了一个自定义表达式上下文插件,它从存储图像信息的xml文件中加载数据。然后,我编写了一个表达式,该表达式将当前图像的文件名作为参数,并在xml文件中查找--所有这些都是用C#完成的。
问题是没有SDK文档,我也不确定这个插件接口是否正式公开,但您只需继承2或3个类并覆盖一些方法将自己的代码注入到应用程序中。它当时就像一种魅力。
您只需要引用程序集PMlabs.GrfX.Framework并创建您自己的这三个类的实现:
- ExpressionsPlugIn<TExpressionContext>
- ExpressionContext
- Expression<TExpressionContext>
表达式类是在呈现图像时调用的函数。上下文包含多个表达式,插件类保存上下文。只需确保实现抽象表达式类中的所有内容,其他的只是管道代码。
编译插件程序集后,将其放到bulkWaterMark安装的bin/plugins文件夹中。
另一个编辑:今天在Github上发布了我的解决方案的简化代码:https://github.com/barnacleboy/bulkWaterMarkExpressionPlugin
https://softwarerecs.stackexchange.com/questions/2128
复制相似问题