2

В настоящее время я использую this Paperclip::Processor для водяных знаков с композитной командой imagemagick.Динамическое водяное обозначение изображения - вложение атрибутов модели в водяные знаки

Это позволяет мне вставлять готовый одиночный файл в качестве водяного знака, который находится в моем общедоступном файле.

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

Гетти недавно changed their watermark to do just this - это очень умно, и я увлечен тем, как они это сделали.

Большое спасибо заранее. Я не ожидаю, что люди точно поймут, как это сделать, но любые идеи или общие принципы будут оценены.

+0

У меня нет прямого опыта с подобными вещами, но я полагаю, что он позволяет добавлять динамический текст, а не только статические изображения, так что не могли бы вы в этом зацепиться? – andy

ответ

0

Спасибо за помощь. Я действительно разработал способ сделать это, добавив convert_options к изображению во время процесса эскизов paperclip. Так, на модели изображения, где a образ:

has_attached_file :image, 
    processors: [:thumbnail], 
    styles: { 
     wide: { 
     geometry: "1120x", 
     convert_options: ->(a) { "-quality 92 -font Arial -pointsize 72 -gravity center gradient: -alpha on -channel rgba -fill 'rgba(255,255,255,0.3)' -opaque 'rgba(20,20,20,1)' -draw \"text 0, 340 #{a.picusername}\" -pointsize 30 -draw \"text 0, 390 'license copy here'\" 
     "} 
     } 

Об этом пишет a.picusername на изображении с различными размещения и укладки деталей. Вы можете найти больше из них here.

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

3

Да, это может быть сделано с помощью Imagemagick; Я сделал это с помощью php и пакетного скрипта. Я понятия не имею, как вы могли бы преобразовать этот пакетный скрипт в ruby-on-rails.

Вы можете получить большинство значений, содержащихся в данных EXIF, и использовать их в некотором аналогичном коде для этого.

:: Do not display the code while running 
@ECHO OFF 

:: Select the F number from the EXIF data and set the FNumber variable 
FOR /F %%x IN ('identify -ping -format "%%[EXIF:FNumber]" %1') DO SET FNumber=%%x 

:: Set the FNumber1 variable to the F number value 
:: Image Magick returns the F number in the format of 700/100 or 40/10 
FOR /F %%x IN ('convert xc: -ping -format "%%[fx:%FNumber%]" info:') DO SET FNumber1=%%x 

:: Set the value of the shutter variable to the shutter speed 
:: Select the shutter speed from the EXIF data 
:: Image Magick returns the shutter speed in the format of 810/100 
FOR /F %%x IN ('identify -ping -format "%%[EXIF:ShutterSpeedValue]" %1') DO SET shutter=%%x 

:: Format the speed to 8.1 and set the speed variable 
FOR /F %%x IN ('convert xc: -ping -format "%%[fx:%shutter%]" info:') DO SET speed=%%x 

:: Calculate the speed in seconds using the power of 2 
:: and save it in the shutterspeed variable 
FOR /F %%x IN ('convert xc: -ping -format "%%[fx:floor((pow(2,%speed%)))]" info:')^
DO SET shutterspeed=%%x 

:: Add the F number and shutter speed to the image 
:: and save as exif_OriginalImageName 
convert %INPUTFILE%^
-pointsize 16 -fill black -gravity northwest^
-annotate +10+5 "Aperture: F%FNumber1% Shutter speed: 1/%shutterspeed% sec" "%~p1EXIF_%~n1.jpg" 
+0

Спасибо, очень ценится. Я действительно нашел способ сделать это довольно просто на RoR ... ответ ниже. –

 Смежные вопросы

  • Нет связанных вопросов^_^