Source code for imagesplit.file.format_factory
# coding=utf-8
"""
Support multiple imaging formats
Author: Tom Doel
Copyright UCL 2017
"""
from imagesplit.file.file_formats import FileFormats
from imagesplit.file.metaio_reader import MetaIoFile
from imagesplit.file.tiff_file_reader import TiffFileReader
from imagesplit.file.vol_reader import VolFile
[docs]class FormatFactory(object):
"""Return required factory for image file formats"""
_factories = {FileFormats.METAIO_FORMAT: MetaIoFile,
FileFormats.VOL_FORMAT: VolFile,
FileFormats.TIFF_FORMAT: TiffFileReader}
[docs] @classmethod
def get_factory(cls, format_string):
"""Get the file factory for this format"""
format_string = cls.simplify_format(format_string)
if format_string in cls._factories:
return cls._factories[format_string]
raise ValueError("Unknown file format: " + format_string)
[docs] @classmethod
def extension_to_format(cls, file_extension):
"""Get the format name for this file"""
# Remove leading and trailing spaces and leading period if it exists
ext = file_extension.lower().strip().lstrip('.')
if ext in ("mhd", "mha"):
return FileFormats.METAIO_FORMAT
elif ext == "vge":
return FileFormats.VOL_FORMAT
elif ext in ("tif", "tiff"):
return FileFormats.TIFF_FORMAT
raise ValueError("Unknown file format: " + file_extension)
[docs] @classmethod
def simplify_format(cls, format_name):
"""Get the standard format name for a format name which should be
standard but may have been modified"""
# Remove leading and trailing spaces and leading period if it exists
name = format_name.lower().strip().lstrip('.')
if name in ("mhd", "mha"):
return FileFormats.METAIO_FORMAT
elif name in ("vge", "vol"):
return FileFormats.VOL_FORMAT
elif name in ("tif", "tiff"):
return FileFormats.TIFF_FORMAT
raise ValueError("Unknown file format: " + format_name)
[docs] @classmethod
def get_extension_for_format(cls, file_format):
"""Returns the output file extension for this file format"""
file_format = cls.simplify_format(file_format)
if file_format == "mhd":
return ".mhd"
elif file_format == "tiff":
return ".tiff"
raise ValueError("Format " + file_format + " not supported")