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
|
||||
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')
|
||||
self.length = length
|
||||
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):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
|
|
@ -612,13 +616,18 @@ class CompositingLayerHeaderBox(Jp2kBox):
|
|||
box : list
|
||||
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',
|
||||
longname='Compositing Layer Header')
|
||||
self.length = length
|
||||
self.offset = offset
|
||||
self.box = []
|
||||
|
||||
def __repr__(self):
|
||||
msg = "glymur.jp2box.CompositingLayerHeaderBox(box={0})"
|
||||
msg = msg.format(self.box)
|
||||
return msg
|
||||
|
||||
def __str__(self):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
for box in self.box:
|
||||
|
|
@ -667,11 +676,11 @@ class ComponentMappingBox(Jp2kBox):
|
|||
Offset of the box from the start of the file.
|
||||
longname : str
|
||||
Verbose description of the box.
|
||||
component_index : int
|
||||
component_index : tuple
|
||||
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)
|
||||
palette_index : int
|
||||
palette_index : tuple
|
||||
Index component from palette
|
||||
"""
|
||||
def __init__(self, component_index, mapping_type, palette_index,
|
||||
|
|
@ -683,6 +692,14 @@ class ComponentMappingBox(Jp2kBox):
|
|||
self.length = length
|
||||
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):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
|
||||
|
|
@ -1610,11 +1627,16 @@ class ResolutionBox(Jp2kBox):
|
|||
box : list
|
||||
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')
|
||||
self.length = length
|
||||
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):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
|
|
@ -1676,6 +1698,11 @@ class CaptureResolutionBox(Jp2kBox):
|
|||
self.length = length
|
||||
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):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
msg += '\n VCR: {0}'.format(self.vertical_resolution)
|
||||
|
|
@ -1733,6 +1760,11 @@ class DisplayResolutionBox(Jp2kBox):
|
|||
self.length = length
|
||||
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):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
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 RED, GREEN, BLUE, GREY, WHOLE_IMAGE
|
||||
|
||||
from .fixtures import OPENJP2_IS_V2_OFFICIAL
|
||||
from .fixtures import OPENJP2_IS_V2_OFFICIAL, opj_data_file
|
||||
|
||||
try:
|
||||
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.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):
|
||||
"""Tests for JPX boxes."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue