XISF fileformat - metadata

Started by herb, October 03, 2023, 09:12:59 AM

Previous topic - Next topic

herb

Hello,

in userforum of XnViewMP someone requested support for XISF images.
This format will become a successor of FITS.

As a curious developer I searched for sample images and downloaded some from github https://github.com/vrruiz/xisfits/tree/master/tests/images
Looking for metadata I have seen that they are stored as properties inside a <metadata> block which is stored inside a <xisf> block. See the following (please be aware I have edited it for better readability)
<?xml version="1.0" encoding="UTF-8"?>
<!-- Extensible Image Serialization Format - XISF version 1.0 Created with PixInsight software - http://pixinsight.com/ -->
<xisf version="1.0" xmlns="http://www.pixinsight.com/xisf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.pixinsight.com/xisf http://pixinsight.com/xisf/xisf-1.0.xsd">
<Image geometry="256:256:1" sampleFormat="UInt8" colorSpace="Gray" location="attachment:4096:65536">
<Resolution horizontal="72" vertical="72" unit="inch"/>
</Image>
<Metadata>
<Property id="XISF:CreationTime" type="String">2019-09-15T20:24:28Z</Property>
<Property id="XISF:CreatorApplication" type="String">PixInsight 01.08.06.1457</Property>
<Property id="XISF:CreatorModule" type="String">XISF module version 01.00.09.0187</Property>
<Property id="XISF:CreatorOS" type="String">Linux</Property>
<Property id="XISF:BlockAlignmentSize" type="UInt16" value="4096"/>
<Property id="XISF:MaxInlineBlockSize" type="UInt16" value="3072"/>
</Metadata>
</xisf>

This post is only an info.
Best regards
herb

Phil Harvey

Just for fun I'll add the ability to read these files to ExifTool 12.68.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

blue-j

The ICC profile for this format is inline base64, and inside a struct no less - is there a way to extract such a beast with ExifTool?  I have not found joy yet.  - J

Phil Harvey

You should be able to do this using the same ExifTool command as extracting any other ICC profile:

exiftool -icc_profile -b FILE > out.icc

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

herb

Hello Phil,

thanks for ExifTool version 12.68 and thanks for XISF support.

The downloaded files from https://github.com/vrruiz/xisfits/tree/master/tests/images
contain also 2 more tags
- BlockAlignmentSize and
- MaxInlineBlockSize

I agree they are missing in specification https://pixinsight.com/doc/docs/XISF-1.0-spec/XISF-1.0-spec.html on https://pixinsight.com/xisf/

So I would like to propose that you also add the 2 missing tags.

Thanks in advance
Best regards
herb

Phil Harvey

Hi Herb,

ExifTool will extract these tags, and it won't write any XISF XML tags, so the only advantage to adding them would be for the documentation.  I haven't even added all of the standard XISF tags yet.  :P

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

blue-j

Indeed.  I misattributed the failure to Exiftool but it lay elsewhere along the processing pipeline!

Quote from: Phil Harvey on October 16, 2023, 09:33:43 PMYou should be able to do this using the same ExifTool command as extracting any other ICC profile:
exiftool -icc_profile -b FILE > out.icc