Нужна стратегия Coldfusion для нанесения водяных знаков на 11 ГБ JPEG

У меня есть клиент, который хочет нанести водяные знаки на свои изображения на сервере IIS, работающем под управлением ColdFusion 10. Я ищу любой способ избежать искажения всех изображений с помощью пакетного обновления и необходимости управлять как версией с водяным знаком, так и версией с оригиналом.

Можно ли делать водяные знаки на лету для изображений с высоким разрешением с помощью ColdFusion и не перегружать сервер? Я думаю, что если я исключу папку из трафика поисковой системы с помощью robots.txt, то это будет не больше, чем трафик посетителей, и это может быть возможно. Такое гибкое решение было бы идеальным, позволяя клиенту обновлять внешний вид водяного знака без повторной дозировки.

Как бы вы справились с этим?

6 ответов

На самом деле это описано в документации по Adobe ColdFusion.

Во-первых, это манипулирование изображениями ColdFusion - в нижней части страницы находится раздел " Создание водяных знаков" (каждая из них более подробно обсуждается на этой странице).

Водяной знак - это полупрозрачное изображение, которое накладывается на другое изображение. Одно из применений водяного знака - защита защищенных авторским правом изображений. Чтобы создать водяной знак в ColdFusion, вы используете функцию ImageSetDrawingTransparency вместе с функцией ImagePaste. Вы можете создать изображение водяного знака одним из трех способов:

  • Создайте водяной знак из существующего файла изображения. Например, вы можете использовать логотип компании в качестве водяного знака.
  • Создайте текстовое изображение в ColdFusion и примените изображение в качестве водяного знака. Например, вы можете создать текстовую строку, например, Copyright или PROOF, и применить ее ко всем изображениям в фотогалерее.
  • Создайте рисунок в ColdFusion и используйте его в качестве водяного знака. Например, вы можете использовать функции рисования, чтобы создать зеленую галочку и применить ее к утвержденным изображениям.

Затем есть Запись изображений в браузер - здесь обсуждается, как записывать изображения непосредственно в браузер, не записывая их на диск.

Используйте действие writeToBrowser тега cfimage для отображения изображений непосредственно в браузере без записи их в файлы. Этот метод полезен для проверки внешнего вида изображения ColdFusion.

И у них даже есть Генерация галереи изображений с водяными знаками в разделе Примеры приложений, которые используют изображения ColdFusion - примерно на полпути вниз по этой странице.

Эти примеры должны помочь вам.

Хорошим решением было бы создать новую папку для изображений с водяными знаками (например, /images/watermarked/), а затем добавить правило перезаписи веб-сервера, которое проверяет, существует ли файл в папке, если он не существует. существует в папке, тогда правило перенаправления пропускает запрос через CF и позволяет генерировать изображение с водяным знаком и сохранять его в папке для будущего использования.

Для этого можно использовать модуль перезаписи IIS. Для получения аналогичного решения перейдите по этой ссылке: если файл существует, вернуть файл, если файл не завершится, перезаписать

Преимущество этого решения заключается в том, что изображения передаются через веб-сервер и в большинстве случаев избегают использования CF. Затем, если у вас есть новый водяной знак, вы просто удаляете папку / images / watermarked /, и она начинает генерировать новые по мере поступления запросов.

Если у вас есть более сложные потребности, вы можете проверить mod_xsendfile (модуль Apache или модуль IIS от Helicon).

Серия блогов Бена Наделя хорошо освещает это: http://www.bennadel.com/blog/775-Learning-ColdFusion-8-CFImage-Part-III-Watermarks-And-Transparency.htm

Это зависит от того, насколько велики изображения в зависимости от нагрузки на сервер и насколько объемен ваш сервер.

То, что я делаю, это рендеринг изображения с помощью ajax-вызова (т. Е. Установите спиннер на место, пока он не загрузится, а затем вытолкните HTML-код с изображением / с водяным знаком).

Вы также можете легко иметь кеш-папку с уже имеющими водяные знаки изображениями, а затем скрипт выполняет функцию fileExists() для кеш-папки и выполняет ее, если она уже существует.

Не имеет прямого отношения к вашему вопросу, но если ваш клиент не хочет, чтобы изображения без водяных знаков были напрямую доступны через Интернет, я думаю, что простого исключения папки из поисковых систем с robots.txt было бы недостаточно, поскольку вы эффективно указываете любой, кто заглядывает в robots.txt в эту папку. Вы должны поместить свои оригинальные изображения в недоступный для веб-каталога каталог.

Это простая логика, которую я использовал для обработки изображений, находящихся на сервере IIS, который был смонтирован на моем диске Linux-сервера. Из последних я делаю водяные знаки на каждом изображении и разделяю их на группы, каждая группа которых представлена ​​папкой. Я обрабатываю около 800-1000 изображений в день действительно высокого качества (минимальный размер файла 10 МБ). Однако я уменьшаю качество, используя параметр качества, если функция ImgaWrite в CF10.

<cfloop array="myArrayofStructs" index="carr">
<cfif len(carr.tempPath) GT 0>              
 <cfif !directoryexists(Dirdestn&carr.tempPath&"/")>
    <cfset DirectoryCreate(Dirdestn&carr.tempPath&"/")>
 <cfelse>
    <!---Do Nothing--->
 </cfif>

<cfset destn=Dirdestn&carr.tempPath&"/"&carr.photoid&".jpg">

<cfset source=Expandpath("/imagebank/"&carr.filename)>
<cfif fileexists(Expandpath("/imagebank/"&carr.filename)) AND IsImageFile(Expandpath("/imagebank/"&carr.filename))>
    <cfif !fileexists(destn)>
     <cfimage source="#source#" name="image_1">
     <cfset imagepaste(image_1, watermark, 500, 0)>                                     <cfset imageWrite(image_1, destn,0)>
    </cfif>
</cfif>

Этот ответ (" Как добавить водяные знаки на изображения через командную строку - надеюсь, используя Irfanview") выглядит как бизнес, просто обслуживающий временный файл, сгенерированный на лету с помощью этого метода. (Он не использует IrfanView). Я не знаком с ColdFusion, так что решать вам.

Другие вопросы по тегам