简单的纯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第三方库


热门话题
onclicklistner中的java全局变量   Android中的Tensorflow:java。尼奥。BufferOverFlowException   java无法预先部署处于无效状态的PersistenceUnit[PU][DeployFailed]   java Liferay;将其他参数传递给jQuery UI aotocompleter   java如何使用Netflix/Eureka服务中的发现信息在Netflix/Zuul和Netflix/Ribbon中启用自动路由?   java如何使用命令打开spotlight   java Android为按钮分配数组值   jsp java。NoClassDefFoundError:即将推出java servlet   应用程序存储设置的java意图   java Android viewflow验证   java如何为多个列表重用BaseAdapter视图   在Java中,socket通过internet发送多播数据包   JavaXStream加载自定义XML