Merge branch 'issue8' into devel
This commit is contained in:
commit
b673b3a2da
2 changed files with 35 additions and 3 deletions
|
|
@ -233,6 +233,11 @@ class Jp2k(Jp2kBox):
|
||||||
msg = "Code block area cannot exceed 4096. "
|
msg = "Code block area cannot exceed 4096. "
|
||||||
msg += "Code block height and width must be larger than 4."
|
msg += "Code block height and width must be larger than 4."
|
||||||
raise RuntimeError(msg)
|
raise RuntimeError(msg)
|
||||||
|
if ((math.log(h, 2) != math.floor(math.log(h, 2)) or
|
||||||
|
math.log(w, 2) != math.floor(math.log(w, 2)))):
|
||||||
|
msg = "Bad code block size ({0}, {1}), "
|
||||||
|
msg += "must be powers of 2."
|
||||||
|
raise IOError(msg.format(h, w))
|
||||||
cparams.cblockw_init = w
|
cparams.cblockw_init = w
|
||||||
cparams.cblockh_init = h
|
cparams.cblockh_init = h
|
||||||
|
|
||||||
|
|
@ -269,10 +274,16 @@ class Jp2k(Jp2kBox):
|
||||||
|
|
||||||
if psizes is not None:
|
if psizes is not None:
|
||||||
for j, (prch, prcw) in enumerate(psizes):
|
for j, (prch, prcw) in enumerate(psizes):
|
||||||
|
if j == 0 and cbsize is not None:
|
||||||
|
cblkh, cblkw = cbsize
|
||||||
|
if cblkh * 2 > prch or cblkw * 2 > prcw:
|
||||||
|
msg = "Highest Resolution precinct size must be at "
|
||||||
|
msg += "least twice that of the code block dimensions."
|
||||||
|
raise IOError(msg)
|
||||||
if ((math.log(prch, 2) != math.floor(math.log(prch, 2)) or
|
if ((math.log(prch, 2) != math.floor(math.log(prch, 2)) or
|
||||||
math.log(prcw, 2) != math.floor(math.log(prcw, 2)))):
|
math.log(prcw, 2) != math.floor(math.log(prcw, 2)))):
|
||||||
msg = "Bad precinct size ({0}, {1}), "
|
msg = "Bad precinct sizes ({0}, {1}), "
|
||||||
msg += "must be multiple of 2."
|
msg += "must be powers of 2."
|
||||||
raise IOError(msg.format(prch, prcw))
|
raise IOError(msg.format(prch, prcw))
|
||||||
|
|
||||||
cparams.prcw_init[j] = prcw
|
cparams.prcw_init[j] = prcw
|
||||||
|
|
|
||||||
|
|
@ -153,7 +153,7 @@ class TestSuiteNegative(unittest.TestCase):
|
||||||
j = Jp2k(infile)
|
j = Jp2k(infile)
|
||||||
|
|
||||||
def test_precinct_size_not_multiple_of_two(self):
|
def test_precinct_size_not_multiple_of_two(self):
|
||||||
# Seems like precinct size should be a multiple of two.
|
# Seems like precinct sizes should be powers of two.
|
||||||
ifile = Jp2k(self.jp2file)
|
ifile = Jp2k(self.jp2file)
|
||||||
data = ifile.read(reduce=3)
|
data = ifile.read(reduce=3)
|
||||||
with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile:
|
with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile:
|
||||||
|
|
@ -161,5 +161,26 @@ class TestSuiteNegative(unittest.TestCase):
|
||||||
with self.assertRaises(IOError) as ce:
|
with self.assertRaises(IOError) as ce:
|
||||||
ofile.write(data, psizes=[(13, 13)])
|
ofile.write(data, psizes=[(13, 13)])
|
||||||
|
|
||||||
|
def test_codeblock_size_not_multiple_of_two(self):
|
||||||
|
# Seems like code block sizes should be powers of two.
|
||||||
|
ifile = Jp2k(self.jp2file)
|
||||||
|
data = ifile.read(reduce=3)
|
||||||
|
with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile:
|
||||||
|
ofile = Jp2k(tfile.name, 'wb')
|
||||||
|
with self.assertRaises(IOError) as ce:
|
||||||
|
ofile.write(data, cbsize=(13, 12))
|
||||||
|
|
||||||
|
def test_codeblock_size_with_precinct_size(self):
|
||||||
|
# Seems like code block sizes should never exceed half that of
|
||||||
|
# precinct size.
|
||||||
|
ifile = Jp2k(self.jp2file)
|
||||||
|
data = ifile.read(reduce=3)
|
||||||
|
with tempfile.NamedTemporaryFile(suffix='.jp2') as tfile:
|
||||||
|
ofile = Jp2k(tfile.name, 'wb')
|
||||||
|
with self.assertRaises(IOError) as ce:
|
||||||
|
ofile.write(data,
|
||||||
|
cbsize=(64, 64),
|
||||||
|
psizes=[(64, 64)])
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue