1

私はcoldfusionのimageGetIPTCMetadata()関数を使用してiptcキーワードを取得しています。

Photomechanicsを使用して、このような階層的な方法でいくつかのキーワードを挿入しました

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でメソッドを呼び出した後、これを取得します-

コードでキーワードを再利用できるように、デリメータなどでキーワードを取得するにはどうすればよいですか。

ここに画像の説明を入力してください

4

3 に答える 3

1

私があなたの質問を正しく理解している場合は、ListGetAtなどのリスト関数の1つを使用して、区切り文字でキーワードを取得できます。または、配列を操作したい場合は、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>
于 2012-02-03T16:54:20.187 に答える
0

ここで解決策を見つけました:

<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 全体を取得し、そこにあるデータでやりたいことをすべて実行できます。

于 2012-02-08T16:28:30.453 に答える