我可以像这个例子一样使用PIL 吗?
我只需要读取数据,我正在寻找最简单的方法(我无法安装pyexiv).
编辑:我不想相信这样做的唯一方法是使用一些需要Exempi和Boost的库(python-xmp-toolkit,pyexiv2,...).必须有另一种选择!
PHP内置支持读取EXIF和IPTC元数据,但我找不到任何方法来读取XMP?
我一直在寻找一种体面的方式来读取C#中JPEG文件的元数据(特别是日期),并且有点短暂.据我所知,现有信息显示如下代码;
BitmapMetadata bmd = (BitmapMetadata)frame.Metadata;
string a1 = (string)bmd.GetQuery("/app1/ifd/exif:{uint=36867}");
Run Code Online (Sandbox Code Playgroud)
但是在我的无知中,我不知道GetQuery()将返回什么位元数据,或者传递什么.
我想首先尝试读取XMP,如果XMP不存在则回退到EXIF.有一个简单的方法吗?
谢谢.
我正在将图像上传到服务器,然后处理图像.有趣的是,上传图像后,关键字丢失了.虽然有其他图像属性.
解析标记没有问题,因此请忽略下面的代码段.
using (var xmp = Xmp.FromFile(workingFilePath, XmpFileMode.ReadOnly))
{
var iptc = new Iptc(xmp);
var Keywords = iptc.Keywords;
}
Run Code Online (Sandbox Code Playgroud)
注意:我正在使用FineUploader上传图片.
FineUploader配置 -
var manualUploader = new qq.FineUploader({
element: document.getElementById('fine-uploader-manual-trigger'),
template: 'qq-template-manual-trigger',
request: {
endpoint: '/image/uploadimage',
params: {
datestamp: datetimeStamp
}
},
callbacks: {
},
autoUpload: false,
multiple: true
});
qq(document.getElementById("trigger-upload")).attach("click", function () {
manualUploader.uploadStoredFiles();
});
Run Code Online (Sandbox Code Playgroud)
Fineuploader日志 -
[Fine Uploader 5.10.1] Received 1 files.
[Fine Uploader 5.10.1] Attempting to validate image.
[Fine Uploader 5.10.1] Generating new thumbnail for …
Run Code Online (Sandbox Code Playgroud) 在我的图像处理软件周围,我使用exiftool成功地从Cr2,TIFF,JPG文件中删除exif信息.添加的标签,例如"关键字",在OSX(山狮)Finder,预览中都可见,并且被Spotlight很好地编入索引.
对于PNG,我需要回退到XMP,因为这是PNG的元数据容器.但是,预览和SpotLight似乎都没有选择使用exiftool的标签.相反,如果我首先在预览中添加标签并使用exiftool稍后添加新标签,则此IS已编入索引.我在这里看到的差异在XMP原始数据中,exiftool新创建了一个标题,而Preview没有.
例如,请查看PNG上维基百科页面中的以下PNG,无需元数据https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png:
使用exiftool添加关键字,然后转储XMP数据块:
exiftool -xmp-dc:subject=ViaExifSubject ./PNG_transparency_demonstration_1.png
exiftool -xmp -b ./PNG_transparency_demonstration_1.png
Run Code Online (Sandbox Code Playgroud)
提供以下XMP数据:
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 9.02'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
xmlns:dc='http://purl.org/dc/elements/1.1/'>
<dc:subject>
<rdf:Bag>
<rdf:li>ViaExifSubject</rdf:li>
</rdf:Bag>
</dc:subject>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='r'?>
Run Code Online (Sandbox Code Playgroud)
但是,在"预览"或"查找器"信息面板中,未找到"ViaExifSubject".
或者,使用OSX预览添加注释(在预览中打开,显示检查器,转到关键字选项卡,单击'+'添加关键字).XMP再次通过exiftool转储:
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.1.2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:subject>
<rdf:Bag>
<rdf:li>viaPreview</rdf:li>
</rdf:Bag>
</dc:subject>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
Run Code Online (Sandbox Code Playgroud)
的xpacket
报头中不存在预览生成的关键词,并且XMP工具包是不同的.现在可以看到"viaPreview"标签,例如mdls
在CLI上使用.
将原始XMP信息推送到干净文件中也不会产生预期结果:
exiftool "-xmp<=viaexif.xmp" PNG_transparency_demonstration_1.png
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,如果我首先使用预览创建一个标签,那么执行上面的命令,反映新标签我怀疑我正在监督需要"激活"的外部数据解析器,拾取标签并将它们放在不同的位置商店(例如.DS_store).我还没有看到任何添加的xattr.
这些是我的问题:
我在我的磁盘上挖出了我的xmp_sdk并尝试了提供的示例:
ModifyXMP可以将"纯"XMP信息写入到OSG Finder中显示的PNG中 - …
我正在尝试使用iTextSharp来读取/修改PDF元数据.我想出了如何使用pdfreader和pdfstamper来做到这一点.我想知道我是否还可以读取/修改其他元数据信息,如版权信息和XMP photoshop命名空间中的其他几个.
我非常感谢任何解决方案的指针.
谢谢,Murugesh.
RDF和XMP有什么区别?
据我所知,XMP源自RDF ......那么RDF不提供什么呢?
我的具体情况是:我有一些图像需要标记实验的执行方式,以及对图像进行了哪种数据分析.我的一位同事正在推动XMP,但他认为图像是照片 - 它们不是真的,它们只是数据的一部分.
从我所看到的(主要通过在notepad ++中打开图像),XMP数据看起来非常类似于RDF - 甚至在标签名称中使用RDF(例如<rdf:Seq>
).
我希望这些数据可供其他使用类似仪器进行类似实验的人使用,因此创建一个迷你标准(架构?)似乎是要走的路.
抱歉缺乏有趣的理解 - 我是博士,而不是程序员!如果它有所不同,选择的语言将是C#.
编辑以获取更多信息: 首先,感谢优秀的回复 - 将XMP视为RDF的词汇表使事情变得更加清晰.
我将要存储的数据类型在任何预定义集合中都不可用.它将详细介绍实验设置,位置和结果.我认为使用RDF是可行的方法.
事物的一个例子(存储在当前的XML中)将是:
<Experiment name="test2" loc="lab" timestamp="65420233400">
<Instrument name="a1" rev="1.0"/>
<Calibration>
<date>13-02-10</date>
<type>complete</type>
</Calibration>
</Experiment>
Run Code Online (Sandbox Code Playgroud)
在我的脑海中,我想我将把它存储在RDF中,如下所示:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:zotty="http://www.zotty.com/rdf/">
<zotty:experiment>
<rdf:Bag>
<zotty:name>test2</zotty:name>
<zotty:loc>lab</zotty:loc>
<zotty:timestamp>65420233400</zotty:timestamp>
<zotty:instrument>
<rdf:Bag>
<zotty:name>a1</zotty:name>
<zotty:rev>1.0</zotty:rev>
<zotty:calibration>
<rdf:bag>
<zotty:date>13-02-10</zotty:date>
<zotty:type>complete</zotty:type>
</rdf:bag>
</zotty:calibration>
</rdf:Bag>
</zotty:instrument>
<rdf:Bag>
</zotty:experiment>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
感谢您的建议 :)
我花了一些时间在Android设备中添加smack.providers,我的应用程序很好地接收了它.我添加了默认的iqProviders和extensionProviders,但我还添加了我的自定义extensionProvider,它是以下内容:
<extensionProvider>
<elementName>players</elementName>
<namespace>boxer:players</namespace>
<className>company.games.boxer.PlayerListProvider</className>
</extensionProvider>
Run Code Online (Sandbox Code Playgroud)
我还要介绍一下PlayerListProvider类,它目前只是为了看它是否会被调用(它不会被调用) - 当我知道它被调用时我将完全实现它,因此至少是功能的一部分作品:
import java.util.List;
import java.util.Map;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smackx.provider.EmbeddedExtensionProvider;
import android.util.Log;
@SuppressWarnings("deprecation")
class PlayerListProvider extends EmbeddedExtensionProvider {
protected PacketExtension createReturnExtension(String currentElement, String currentNamespace, Map<String,String> attributeMap, List<? extends PacketExtension> content) {
Log.w("***** AAAAAAAAAAAAAAAAAAAA *******", "0");
return new XMLPlayerList();
}
}
class XMLPlayerList implements PacketExtension {
public String getElementName() {
return "aaaaa";
}
public String getNamespace() {
return "aaaaa";
}
public String toXML() {
return "aaaaa";
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行客户端Android应用程序时,我收到以下消息:
<message to="eee@localhost" type="chat" id="9" from="admin@localhost"> …
Run Code Online (Sandbox Code Playgroud) 是否有标准方法从/向照片元数据读取/写入面部标签?
我可以用它从流行的照片组织者导入脸部标记信息吗?
我正在寻找一个工作的iText版本5.5.4示例,以添加myProp
内容类似于<custom>My metadata</custom>
PDF文档的自定义元数据值.在这种情况下,我们不能使用像DC这样的现有模式.
提前致谢.