Added support for jplh, jpch, cmap, res , resd, resc #133
This commit is contained in:
parent
18818495d2
commit
3ad31c91b8
2 changed files with 82 additions and 9 deletions
|
|
@ -554,11 +554,15 @@ class CodestreamHeaderBox(Jp2kBox):
|
||||||
box : list
|
box : list
|
||||||
List of boxes contained in this superbox.
|
List of boxes contained in this superbox.
|
||||||
"""
|
"""
|
||||||
def __init__(self, length=0, offset=-1):
|
def __init__(self, box=[], length=0, offset=-1):
|
||||||
Jp2kBox.__init__(self, box_id='jpch', longname='Codestream Header')
|
Jp2kBox.__init__(self, box_id='jpch', longname='Codestream Header')
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
self.box = []
|
self.box = box
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
msg = "glymur.jp2box.CodestreamHeaderBox(box={0})".format(self.box)
|
||||||
|
return msg
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
msg = Jp2kBox.__str__(self)
|
msg = Jp2kBox.__str__(self)
|
||||||
|
|
@ -612,13 +616,18 @@ class CompositingLayerHeaderBox(Jp2kBox):
|
||||||
box : list
|
box : list
|
||||||
List of boxes contained in this superbox.
|
List of boxes contained in this superbox.
|
||||||
"""
|
"""
|
||||||
def __init__(self, length=0, offset=-1):
|
def __init__(self, box=[], length=0, offset=-1):
|
||||||
Jp2kBox.__init__(self, box_id='jplh',
|
Jp2kBox.__init__(self, box_id='jplh',
|
||||||
longname='Compositing Layer Header')
|
longname='Compositing Layer Header')
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
self.box = []
|
self.box = []
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
msg = "glymur.jp2box.CompositingLayerHeaderBox(box={0})"
|
||||||
|
msg = msg.format(self.box)
|
||||||
|
return msg
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
msg = Jp2kBox.__str__(self)
|
msg = Jp2kBox.__str__(self)
|
||||||
for box in self.box:
|
for box in self.box:
|
||||||
|
|
@ -667,11 +676,11 @@ class ComponentMappingBox(Jp2kBox):
|
||||||
Offset of the box from the start of the file.
|
Offset of the box from the start of the file.
|
||||||
longname : str
|
longname : str
|
||||||
Verbose description of the box.
|
Verbose description of the box.
|
||||||
component_index : int
|
component_index : tuple
|
||||||
Index of component in codestream that is mapped to this channel.
|
Index of component in codestream that is mapped to this channel.
|
||||||
mapping_type : int
|
mapping_type : tuple
|
||||||
mapping type, either direct use (0) or palette (1)
|
mapping type, either direct use (0) or palette (1)
|
||||||
palette_index : int
|
palette_index : tuple
|
||||||
Index component from palette
|
Index component from palette
|
||||||
"""
|
"""
|
||||||
def __init__(self, component_index, mapping_type, palette_index,
|
def __init__(self, component_index, mapping_type, palette_index,
|
||||||
|
|
@ -683,6 +692,14 @@ class ComponentMappingBox(Jp2kBox):
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
msg = "glymur.jp2box.ComponentMappingBox("
|
||||||
|
msg += "component_index={0}, mapping_type={1}, palette_index={2})"
|
||||||
|
msg = msg.format(self.component_index,
|
||||||
|
self.mapping_type,
|
||||||
|
self.palette_index)
|
||||||
|
return msg
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
msg = Jp2kBox.__str__(self)
|
msg = Jp2kBox.__str__(self)
|
||||||
|
|
||||||
|
|
@ -1610,11 +1627,16 @@ class ResolutionBox(Jp2kBox):
|
||||||
box : list
|
box : list
|
||||||
List of boxes contained in this superbox.
|
List of boxes contained in this superbox.
|
||||||
"""
|
"""
|
||||||
def __init__(self, length=0, offset=-1):
|
def __init__(self, box=[], length=0, offset=-1):
|
||||||
Jp2kBox.__init__(self, box_id='res ', longname='Resolution')
|
Jp2kBox.__init__(self, box_id='res ', longname='Resolution')
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
self.box = []
|
self.box = box
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
msg = "glymur.jp2box.ResolutionBox(box={0})"
|
||||||
|
msg = msg.format(self.box)
|
||||||
|
return msg
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
msg = Jp2kBox.__str__(self)
|
msg = Jp2kBox.__str__(self)
|
||||||
|
|
@ -1676,6 +1698,11 @@ class CaptureResolutionBox(Jp2kBox):
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
msg = "glymur.jp2box.CaptureResolutionBox({0}, {1})"
|
||||||
|
msg = msg.format(self.vertical_resolution, self.horizontal_resolution)
|
||||||
|
return msg
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
msg = Jp2kBox.__str__(self)
|
msg = Jp2kBox.__str__(self)
|
||||||
msg += '\n VCR: {0}'.format(self.vertical_resolution)
|
msg += '\n VCR: {0}'.format(self.vertical_resolution)
|
||||||
|
|
@ -1733,6 +1760,11 @@ class DisplayResolutionBox(Jp2kBox):
|
||||||
self.length = length
|
self.length = length
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
msg = "glymur.jp2box.DisplayResolutionBox({0}, {1})"
|
||||||
|
msg = msg.format(self.vertical_resolution, self.horizontal_resolution)
|
||||||
|
return msg
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
msg = Jp2kBox.__str__(self)
|
msg = Jp2kBox.__str__(self)
|
||||||
msg += '\n VDR: {0}'.format(self.vertical_resolution)
|
msg += '\n VDR: {0}'.format(self.vertical_resolution)
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ from glymur.jp2box import JPEG2000SignatureBox
|
||||||
from glymur.core import COLOR, OPACITY
|
from glymur.core import COLOR, OPACITY
|
||||||
from glymur.core import RED, GREEN, BLUE, GREY, WHOLE_IMAGE
|
from glymur.core import RED, GREEN, BLUE, GREY, WHOLE_IMAGE
|
||||||
|
|
||||||
from .fixtures import OPENJP2_IS_V2_OFFICIAL
|
from .fixtures import OPENJP2_IS_V2_OFFICIAL, opj_data_file
|
||||||
|
|
||||||
try:
|
try:
|
||||||
FORMAT_CORPUS_DATA_ROOT = os.environ['FORMAT_CORPUS_DATA_ROOT']
|
FORMAT_CORPUS_DATA_ROOT = os.environ['FORMAT_CORPUS_DATA_ROOT']
|
||||||
|
|
@ -779,6 +779,47 @@ class TestRepr(unittest.TestCase):
|
||||||
self.assertFalse(newbox.colorspace_unknown)
|
self.assertFalse(newbox.colorspace_unknown)
|
||||||
self.assertFalse(newbox.ip_provided)
|
self.assertFalse(newbox.ip_provided)
|
||||||
|
|
||||||
|
def test_codestreamheader_box(self):
|
||||||
|
"""Verify __repr__ method on jpch box."""
|
||||||
|
jpch = glymur.jp2box.CodestreamHeaderBox()
|
||||||
|
newbox = eval(repr(jpch))
|
||||||
|
self.assertEqual(newbox.box_id, 'jpch')
|
||||||
|
self.assertEqual(len(newbox.box), 0)
|
||||||
|
|
||||||
|
def test_compositinglayerheader_box(self):
|
||||||
|
"""Verify __repr__ method on jplh box."""
|
||||||
|
jplh = glymur.jp2box.CompositingLayerHeaderBox()
|
||||||
|
newbox = eval(repr(jplh))
|
||||||
|
self.assertEqual(newbox.box_id, 'jplh')
|
||||||
|
self.assertEqual(len(newbox.box), 0)
|
||||||
|
|
||||||
|
def test_componentmapping_box(self):
|
||||||
|
"""Verify __repr__ method on cmap box."""
|
||||||
|
cmap = glymur.jp2box.ComponentMappingBox(component_index=(0, 0, 0),
|
||||||
|
mapping_type=(1, 1, 1),
|
||||||
|
palette_index=(0, 1, 2))
|
||||||
|
newbox = eval(repr(cmap))
|
||||||
|
self.assertEqual(newbox.box_id, 'cmap')
|
||||||
|
self.assertEqual(newbox.component_index, (0, 0, 0))
|
||||||
|
self.assertEqual(newbox.mapping_type, (1, 1, 1))
|
||||||
|
self.assertEqual(newbox.palette_index, (0, 1, 2))
|
||||||
|
|
||||||
|
def test_resolution_boxes(self):
|
||||||
|
"""Verify __repr__ method on resolution boxes."""
|
||||||
|
resc = glymur.jp2box.CaptureResolutionBox(0.5, 2.5)
|
||||||
|
resd = glymur.jp2box.DisplayResolutionBox(2.5, 0.5)
|
||||||
|
res_super_box = glymur.jp2box.ResolutionBox(box=[resc, resd])
|
||||||
|
|
||||||
|
newbox = eval(repr(res_super_box))
|
||||||
|
|
||||||
|
self.assertEqual(newbox.box_id, 'res ')
|
||||||
|
self.assertEqual(newbox.box[0].box_id, 'resc')
|
||||||
|
self.assertEqual(newbox.box[0].vertical_resolution, 0.5)
|
||||||
|
self.assertEqual(newbox.box[0].horizontal_resolution, 2.5)
|
||||||
|
self.assertEqual(newbox.box[1].box_id, 'resd')
|
||||||
|
self.assertEqual(newbox.box[1].vertical_resolution, 2.5)
|
||||||
|
self.assertEqual(newbox.box[1].horizontal_resolution, 0.5)
|
||||||
|
|
||||||
|
|
||||||
class TestJpxBoxes(unittest.TestCase):
|
class TestJpxBoxes(unittest.TestCase):
|
||||||
"""Tests for JPX boxes."""
|
"""Tests for JPX boxes."""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue