【问题标题】:Extract IPTC using ImageMagick without Entities but UTF-8使用没有实体但 UTF-8 的 ImageMagick 提取 IPTC
【发布时间】:2015-06-15 15:20:50
【问题描述】:

我有一张包含 ITPC 数据的图像,并使用以下命令将 IPTC 提取为文本数据:

convert image.jpg IPTCTEXT:iptc.txt

问题在于这似乎是在使用实体来表示“特殊字符”:

2#120#Caption="Beschreibung für den Import aus IPTC"

其实这里应该是“für”。但是没有得到正确的实体 ü对于“ü”字符,我得到两个实体(可能 UTF-8 编码字符的两个字节都转换为实体分隔)。我无法正确解析这两个实体。

有什么方法可以获取正确的实体或禁用完全返回 UTF-8 字符的实体?

编辑: 我尝试在 Java 中使用 StringEscapeUtils.unescapeXml 解析实体,但我得到两个字符(“ü”)而不是“ü”,因为两个实体都是非转义分隔的。

编辑2: 此处的示例图片:http://fs1.directupload.net/images/150615/5eiv6wwf.jpg

【问题讨论】:

  • 您能否提供带有该文本的图片?
  • 在最初的帖子中提供了链接。
  • 这样更好吗? convert http://fs1.directupload.net/images/150615/5eiv6wwf.jpg 8BIMTEXT:-
  • 遗憾的是没有。 IPTCTEXT 和 8BIMTEXT 都有“für”。

标签: java utf-8 imagemagick iptc


【解决方案1】:

最可靠的元数据包是恕我直言 exiv2(http://exiv2.org/;适用于所有 Linux 发行版、Windows,但不确定 Mac 二进制文件)。

结果见http://paste.fedoraproject.org/232538/34459066/。恐怕 ImageMagick 用于元数据目的并不是那么好。

【讨论】:

  • 在 Mac 上获取exiv2 的最简单方法是使用homebrew。通过在brew.sh 上复制并粘贴一行来安装homebrew,然后运行brew install exiv2。任务完成!
【解决方案2】:

我不确定您为什么看到与我不同的东西。我在 OS X 下的 Mac 上运行 ImageMagick 6.9.1-4。

如果我这样做:

identify -format "%[IPTC:2:120]" http://fs1.directupload.net/images/150615/5eiv6wwf.jpg

我明白了:

Beschreibung für den Import aus EXIF

如果我用十六进制转储它,我会得到这个:

我认为这可能与您终端的区域设置有关 - 尽管我不知道为什么当您重定向到文件时仍然会发生这种情况。您是否尝试过:

LC_CTYPE=C identify -format "%[IPTC:2:120]" http://fs1.directupload.net/images/150615/5eiv6wwf.jpg | od -xc

【讨论】:

  • 使用 -format 参数我也得到了正确的结果。问题是使用 IPTCTEXT 检索所有 IPTC 数据时,结果不正确(至少对我来说似乎不正确)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 2012-04-27
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
相关资源
最近更新 更多