2012-02-03 3 views
1

Я использую функцию coldfusion для создания ключевых слов iptcGetIPTCMetadata().IPTC данные в coldfusion 9

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

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

ответ

0

Я нашел решение here:

<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> 

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

1

Если я правильно понимаю ваш вопрос, вы можете использовать один из List functions как ListGetAt получить ключевые слова с разделителем. Или, если вы предпочитаете работать с массивами вы можете использовать функцию ListToArraykeywordsArray = 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

Похоже, что ключевые слова представляют собой массив списков. –

+0

@JasonTabler Я только что проверил функцию [ImageGetIPTCMetadata] (http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-6bca.html) с некоторыми изображениями. Результаты, которые я вижу, возвращаются как строка текста.В моем случае и из того, что я видел в другом месте, ключевые слова обычно ограничиваются символами пробела вместо символов канала. – Micah

+0

Да, это моя проблема. Если я использую разделитель Space, то в итоге у меня будет столько ключевых слов, а я хочу только одну полную строку для помощника начальника генерального штаба (ACGS). Coldfusion - это разделение запятой с конца каждого ключевого слова. Если я вижу это в Windows, я вижу, что есть; в конце каждой Иерархии. – nasaa

0

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

Больше CFX_OPENIMAGE INFO перейти к http://www.kolumbus.fi/jukka.manner/cfx_openimage/

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

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