Merge branch 'issue154' into devel
This commit is contained in:
commit
2c1490d173
3 changed files with 48 additions and 7 deletions
15
CHANGES.txt
15
CHANGES.txt
|
|
@ -1,11 +1,12 @@
|
|||
Feb 03, 2014 - Removed support for Python 2.6. Added write support for
|
||||
JP2 Palette and Component Mapping boxes, JPX Association and
|
||||
NumberList boxes. Added read support for JPX free, number list,
|
||||
data reference, fragment table, and fragment list boxes. Palette
|
||||
box now a 2D numpy array instead of a list of 1D arrays. JP2
|
||||
super box constructors now take optional box list argument.
|
||||
Fixed bug where JPX files with more than one codestream but
|
||||
advertising jp2 compatibility were not being read.
|
||||
JP2 DataEntryURL, Palette and Component Mapping boxes, JPX
|
||||
Association and NumberList boxes. Added read support for JPX
|
||||
free, number list, data reference, fragment table, and fragment
|
||||
list boxes. Palette box now a 2D numpy array instead of a list
|
||||
of 1D arrays. JP2 super box constructors now take optional box
|
||||
list argument. Fixed bug where JPX files with more than one
|
||||
codestream but advertising jp2 compatibility were not being
|
||||
read.
|
||||
|
||||
Jan 28, 2014 - v0.5.10 Fixed bad warning when reader requirements box mask
|
||||
length is unsupported.
|
||||
|
|
|
|||
|
|
@ -2518,6 +2518,18 @@ class DataEntryURLBox(Jp2kBox):
|
|||
self.length = length
|
||||
self.offset = offset
|
||||
|
||||
def write(self, fptr):
|
||||
"""Write a data entry url box to file.
|
||||
"""
|
||||
length = 8 + 1 + 3 + len(self.url.encode())
|
||||
write_buffer = struct.pack('>I4sBBBB',
|
||||
length, self.box_id.encode(),
|
||||
self.version,
|
||||
self.flag[0], self.flag[1], self.flag[2])
|
||||
fptr.write(write_buffer)
|
||||
fptr.write(self.url.encode())
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
msg = "glymur.jp2box.DataEntryURLBox({0}, {1}, '{2}')"
|
||||
msg = msg.format(self.version, self.flag, self.url)
|
||||
|
|
|
|||
|
|
@ -52,6 +52,34 @@ def load_tests(loader, tests, ignore):
|
|||
tests.addTests(doctest.DocTestSuite('glymur.jp2box'))
|
||||
return tests
|
||||
|
||||
@unittest.skipIf(os.name == "nt", "Temporary file issue on window.")
|
||||
class TestDataEntryURL(unittest.TestCase):
|
||||
"""Test suite for DataEntryURL boxes."""
|
||||
def setUp(self):
|
||||
self.jp2file = glymur.data.nemo()
|
||||
|
||||
def test_basic_url(self):
|
||||
"""Just your most basic URL box."""
|
||||
# Wrap our j2k file in a JP2 box along with an interior url box.
|
||||
jp2 = Jp2k(self.jp2file)
|
||||
|
||||
url = 'http://glymur.readthedocs.org'
|
||||
deurl = glymur.jp2box.DataEntryURLBox(0, (0, 0, 0), url)
|
||||
boxes = [box for box in jp2.box if box.box_id != 'uuid']
|
||||
boxes.append(deurl)
|
||||
with tempfile.NamedTemporaryFile(suffix=".jp2") as tfile:
|
||||
jp22 = jp2.wrap(tfile.name, boxes=boxes)
|
||||
import shutil
|
||||
shutil.copyfile(tfile.name, '/Users/jevans/a.jp2')
|
||||
|
||||
actdata = [box.box_id for box in jp22.box]
|
||||
expdata = ['jP ', 'ftyp', 'jp2h', 'jp2c', 'url ']
|
||||
self.assertEqual(actdata, expdata)
|
||||
self.assertEqual(jp22.box[4].version, 0)
|
||||
self.assertEqual(jp22.box[4].flag, (0, 0, 0))
|
||||
self.assertEqual(jp22.box[4].url, url)
|
||||
|
||||
|
||||
@unittest.skipIf(glymur.version.openjpeg_version_tuple[0] < 2 or
|
||||
OPENJP2_IS_V2_OFFICIAL,
|
||||
"Not supported until 2.0+.")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue