我有一个客户想要在运行ColdFusion 10的IIS服务器上为他们的图像添加水印。我正在寻找任何方法来避免使用批量更新来破坏所有图像,并且必须同时管理带水印的版本和原始版本。
是否可以使用ColdFusion动态地为高rez图像添加水印,而不会使服务器过载?我在想,如果我用robots.txt从搜索引擎流量中排除文件夹,那么它不会超过访问者的流量,这是可能的。像这样灵活的解决方案将是理想的,允许客户端更新水印的外观,而不需要重新批量处理。
你会怎么处理呢?
发布于 2013-11-05 03:34:48
这实际上在Adobe ColdFusion文档中有所涉及。
首先是Manipulating ColdFusion images -页面底部有一个关于创建水印的部分(每个项目符号都在该页面上进行了更详细的讨论)
水印是叠加在另一幅图像上的半透明图像。水印的一种用途是保护受版权保护的图像。要在ColdFusion中创建水印,请将ImageSetDrawingTransparency函数与ImagePaste函数一起使用。您可以通过以下三种方式之一创建水印图像:
然后是Writing images to the browser -它讨论了如何将图像直接写入浏览器,而不是将它们写入磁盘。
使用cfimage标签的writeToBrowser操作直接在浏览器中显示图像,而无需将其写入文件。此技术对于测试ColdFusion图像的外观很有用。
他们甚至在使用ColdFusion图像的应用程序示例下有Generating a gallery of watermarked images -大约在页面的一半。
这些例子应该会让你振作起来。
发布于 2013-11-05 02:08:28
Ben Nadel的博客系列很好地介绍了这一点:http://www.bennadel.com/blog/775-Learning-ColdFusion-8-CFImage-Part-III-Watermarks-And-Transparency.htm
这取决于图像对于服务器负载的实际大小,以及您的服务器有多大。
我所做的是通过ajax调用来渲染图像(即在适当的位置放置一个微调器,直到它被加载,然后用渲染的/带水印的图像换出HTML )。
您还可以轻松地拥有一个包含已添加水印的图像的缓存文件夹,然后脚本对该缓存文件夹执行fileExists()操作,如果该文件夹已经存在,则为其提供服务。
发布于 2013-11-05 03:35:38
一个好的解决方案是为已经加了水印的图像创建一个新的文件夹(例如/ images / watermarked /),然后添加一个web服务器重写规则来检查文件夹中是否存在该文件,如果文件夹中不存在该文件,则重定向规则通过CF运行请求,并允许您生成带水印的图像并将其存储在文件夹中以备将来使用。
您可以使用IIS重写模块来完成此操作,请查看类似解决方案的链接:If File exists, return file, If File does not exit, Rewrite
该解决方案的好处是通过web服务器为图像提供服务,并避免在大多数情况下涉及CF。然后,如果你有一个新的水印,你只需清空/images/ watermark /文件夹,当请求到来时,它就会开始生成新的水印。
如果您有更复杂的需求,那么您可能需要查看mod_xsendfile (来自Helicon的Apache模块或IIS模块)。
https://stackoverflow.com/questions/19773854
复制相似问题