Данные IPTC в Coldfusion 9 - PullRequest
       8

Данные IPTC в Coldfusion 9

1 голос
/ 03 февраля 2012

Я использую функцию imageGetIPTCMetadata () от coldfusion, чтобы получить ключевые слова iptc.

Я использовал фотомеханику, чтобы вставить некоторые ключевые слова в иерархическом порядке, как это

Personnel   |   Appointments   |   Assistant Chief of General Staff (ACGS), Personnel  |  Ranks  |  Royal Marine  |  Colour Sergeant (CSgt), Personnel | Ranks | Royal Navy | Chief Petty Officer (CPO), Personnel|Ranks|Army|Field Marshall (Fd Marshall) (FM)

Но после того, как я вызываю метод в моем CFC, я получаю это -

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

enter image description here

Ответы [ 3 ]

1 голос
/ 03 февраля 2012

Если я правильно понимаю ваш вопрос, вы можете использовать одну из функций списка , например ListGetAt , чтобы получить ключевые слова с разделителем.Или, если вы предпочитаете работать с массивами, вы можете использовать функцию ListToArray keywordsArray = ListToArray(data.Keywords,"|")

<cfscript>  
    data = ImageGetIPTCMetadata(myImage);

    for( i=1; i LTE ListLen(data.Keywords,"|"); i++ )
    {
        WriteOutput( Trim( ListGetAt(data.Keywords, i, "|") ) & "<br />" );
    }
</cfscript>
0 голосов
/ 27 сентября 2014

Я использую CFX_OpenImage для чтения и записи данных IPTC_ в файлах .jpg в CF8 через CF11. Я также использую это для изменения размера изображения и поворота.

Подробнее CFX_OPENIMAGE INFO см. http://www.kolumbus.fi/jukka.manner/cfx_openimage/

It GraphicsMagick 1.3.17.
GraphicsMagick (www.graphicsmagick.org) поддерживает стабильную ветку релизов, ведет подробный журнал изменений и поддерживает стабильный исходный репозиторий с полной историей версий, что позволяет контролировать изменения и точно описывать изменения между выпусками. GraphicsMagick обеспечивает постоянную поддержку ветки релиза.
ИНФОРМАЦИЯ ОБ УСТАНОВКЕ:

Примечание. Если вы устанавливаете 64-битную версию тега, загрузите и установите Microsoft Visual C ++ 2010 распространяемый пакет (x64) от Microsoft (http://www.microsoft.com/download/en/details.aspx?id=14632). x64-версия была скомпилирована и написана в Visual Studio 2010.
CFX_OPENIMAGE шаги установки, общие для обеих версий:
Создайте переменную окружения. Поскольку GraphicsMagick необходимо прочитать файлы конфигурации (файлы * .mgk), нам нужно сообщить тегу, где эти файлы находятся. Для этого необходимо установить переменную среды, специфичную для пользователя системы или среды выполнения Cold Fusion. Имя этой переменной - CFX_OPENIMAGE_FULLPATH.
Переменная среды CFX_OPENIMAGE_FULLPATH должна содержать полное имя пути, указывающее на каталог, в котором хранятся все mgk-файлы и файл cfx_openimage.ini. Значением по умолчанию для этого является «c: \ cfx_openimage \». Обратите внимание, что нужен последний символ «\».
Вы можете установить действительную dll в любое время, в любом случае, вам необходимо зарегистрироваться на странице администрирования CF. Для обеспечения одинаковых настроек безопасности для всех файлов рекомендуется хранить cfx_openimage.dll в том же каталоге, что и каталоги * .mgk и cfx_openimage.ini.

0 голосов
/ 08 февраля 2012

Я нашел решение здесь :

<cfparam name="URL.source" default="xmp-asset.jpg">
<cffile action="readbinary" file="#ExpandPath(URL.source)#" variable="data">
<!-- encode the binary data to hex -->
<cfset hex_data = BinaryEncode(data,"hex") />
<!-- string indicating beginning of packet '<x:xmpmeta' -->
<cfset xmp_string_begin = "3C783A786D706D657461" />
<!-- string indicating end of packet '</x:xmpmeta>' -->
<cfset xmp_string_end = "3C2F783A786D706D6574613E" />
<!-- find the starting index in the hex string -->
<cfset idx_start = FindNoCase(xmp_string_begin,hex_data) />
<!-- find the ending index in the hex string -->
<cfset idx_end = FindNoCase(xmp_string_end,hex_data,idx_start) + Len(xmp_string_end) />
<!-- using the start and end indices, extract the xmp packet -->
<cfset xmp_hex = Mid(hex_data,idx_start,Evaluate(idx_end-idx_start)) />
<!-- convert the hex to readable characters -->
<cfset xmp_string = ToString(BinaryDecode(xmp_hex,"hex")) />
<!-- parse the xml string to and xml structure -->
<cfset xmp_xml = XmlParse(xmp_string) />
<cfcontent type="text/xml">
<cfoutput>#xmp_string#</cfoutput>

Теперь я могу получить весь XMP xml и сделать все, что хочу, с данными там.

...