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

如果我正确理解您的问题,您可以使用ListGetAtList 函数之一来获取带有分隔符的关键字。或者,如果您更喜欢使用数组,您可以使用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 回答
0

我使用 CFX_OpenImage 在 CF8 到 CF11 的 .jpg 文件中读取和写入 IPTC_ 数据。我也用它来调整图像大小和旋转。

更多 CFX_OPENIMAGE 信息请访问http://www.kolumbus.fi/jukka.manner/cfx_openimage/

它是 GraphicsMagick 1.3.17。
GraphicsMagick (www.graphicsmagick.org) 维护一个稳定的发布分支,维护一个详细的变更日志,并维护一个具有完整版本历史的稳定源存储库,以便控制变更,准确描述发布之间的变更。GraphicsMagick 为发布分支提供持续支持。
更多安装信息:

注意:如果您安装的是 64 位版本的标签,请从 Microsoft ( http://www.microsoft.com/download/en/details.aspx?id=14632 ) 下载并安装 Microsoft Visual C++ 2010 Redistributable Package (x64) . 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 目录保持在同一目录中。

于 2014-09-27T17:13:16.317 回答