Here is what I did, based on bio-formats as well.
I just create an import process, trigger the import preparation, but do not read the pixels themselves.
DebugTools.setRootLevel( "ERROR" );
final ImporterOptions options = new ImporterOptions();
options.setId( imageFile );
options.setQuiet( true );
options.setWindowless( true );
final ImportProcess process = new ImportProcess( options );
if ( !process.execute() )
{
errorMessage = "Error while preparing the import of metadata.";
return null;
}
final IMetadata metadata = process.getOMEMetadata();
final Length pixelsPhysicalSizeX = metadata.getPixelsPhysicalSizeX( series );
final Length pixelsPhysicalSizeY = metadata.getPixelsPhysicalSizeY( series );
final Length pixelsPhysicalSizeZ = metadata.getPixelsPhysicalSizeZ( series );
final Time timeIncrement = metadata.getPixelsTimeIncrement( series );
final PositiveInteger sizeX = metadata.getPixelsSizeX( series );
final PositiveInteger sizeY = metadata.getPixelsSizeY( series );
final PositiveInteger sizeZ = metadata.getPixelsSizeZ( series );
final PositiveInteger sizeT = metadata.getPixelsSizeT( series );