简单的纯python avm元数据处理

PyAVM的Python项目详细描述


Build StatusCoverage Status

关于

pyavm是一个模块,用于表示、读取和写入以下元数据 *Astronomy Visualization Metadata*(平均值) 标准。

要求

pyavm支持python 2.7和3.5+。不需要其他依赖项 简单地读取和嵌入avm元数据。

但是,对于更多的 高级功能:

安装和报告问题

pyavm可以与pip一起安装:

pip install pyavm

请通过github上的issue tracker报告您遇到的任何问题。

使用pyavm

导入

pyavm提供了AVM类来表示avm元数据,并且 导入如下:

>>>frompyavmimportAVM

分析文件

从现有图像解析AVM元数据,只需调用 from_image使用图像(或任何 类文件对象:

>>>avm=AVM.from_image('myexample.jpg')

只有jpeg和png文件在解析 遵循jpeg和png规范。对于其他文件格式,pyavm 只需扫描文件内容,查找xmp包。 这种方法不太可靠,但在大多数实际情况下应该有效。

访问和设置元数据

您可以使用

>>>print(avm)

可以使用属性表示法来访问AVM元数据:

>>>avm.Spatial.Equinox'J2000'>>>avm.Publisher'Chandra X-ray Observatory'

可以修改标记:

>>>avm.Spatial.Equinox="B1950">>>avm.Spatial.Notes="The WCS information was updated on 04/02/2010"

从头开始创建avm对象

要创建一个空的avm元数据保持器,只需调用AVM()without 任何参数:

>>>avm=AVM()

注意,这将在1.2之后创建一个avm对象 规范。如果需要,可以指定 使用标准:

>>>avm=AVM(version=1.1)

转换为wcs对象

可以从avm元数据创建astropy wcs对象:

>>>wcs=avm.to_wcs()

默认情况下,Spatial.FITSheader将在可用时使用,但如果 不是,wcs信息是从其他Spatial.*标记中提取的。 要强制pyavm不尝试Spatial.FITSheader,请使用:

>>>wcs=avm.to_wcs(use_full_header=False)

从fits头初始化

要从fits头创建avm元数据对象,只需传递 header(作为astropy头实例)到from_header类 方法:

>>>fromastropy.ioimportfits>>>header=fits.getheader('image.fits')>>>avm=AVM.from_header(header)

默认情况下,将创建avm标记Spatial.FITSheader, 包含完整的头(除了另一个Spatial.* 标签)。这可以通过以下方式禁用:

>>>avm=AVM.from_header(header,include_full_header=False)

从wcs对象初始化

类似地,可以从 Astropy WCS实例:

>>>fromastropy.wcsimportWCS>>>frompyavmimportAVM>>>wcs=WCS('image.fits')>>>avm=AVM.from_wcs(wcs)

用avm元数据标记图像

可以将AVM元数据嵌入到图像文件中:

>>>avm.embed('original_image.jpg','tagged_image.jpg')

此时,仅支持jpg和png文件进行嵌入。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用“Wed,01 Jul 2015 17:32:41 EDT”解析字符串   java Storm apache升级(1.0.0到2.0.0)   java类驻留在不同的目录中,而不是包指定的目录。为什么?   将Java中的图像缩放到非常小的维度   java如何通过子文档从自定义方面访问ElasticSearch parentdoc字段   java如何在RationalSoftwareArchitect中使用findbugs?   Java中的事件提升处理   java值被添加到arrayList的所有索引中,而不是在“”时添加到最后一个索引中。正在使用arraylist的add()方法   JFrame中的java JPanel派生类   java如何用循环和异步方法模拟类   java Android阻止可绘制背景超出视图范围   为客户排序Java阵列   java Apache poi如何将工作表设置为枚举位置值属性?   java Rhino在使用自定义类参数调用javascript函数时出错   java格式化日期从年月日到年月日   spring如何修复java。lang.illegalargumentexception在此特定场景中是否尝试创建具有null实体的合并事件?   java如何创建更好的对象