fixed printing of j2k files with "-c 0", closes #294

It's kind of meaningless to supply that option with a raw codestream,
but if it's what the user wanted to do, then it's what the user wanted
to do.
This commit is contained in:
jevans 2014-10-24 21:21:54 -04:00
commit 4ffb46833f
2 changed files with 18 additions and 5 deletions

View file

@ -2,9 +2,11 @@
Entry point for console script jp2dump.
"""
import argparse
import os
import sys
import warnings
from . import Jp2k, set_printoptions
from . import Jp2k, set_printoptions, lib
def main():
"""
@ -55,11 +57,13 @@ def main():
# JP2 metadata can be extensive, so don't print any warnings until we
# are done with the metadata.
j = Jp2k(filename)
if print_full_codestream:
print(j.get_codestream(header_only=False))
jp2 = Jp2k(filename)
if jp2._codec_format == lib.openjp2.CODEC_J2K and codestream_level == 0:
print('File: {0}'.format(os.path.basename(filename)))
elif print_full_codestream:
print(jp2.get_codestream(header_only=False))
else:
print(j)
print(jp2)
# Re-emit any warnings that may have been suppressed.
if len(wctx) > 0:

View file

@ -1102,3 +1102,12 @@ class TestJp2dump(unittest.TestCase):
actual = self.run_jp2dump(['', '-x', self.jp2file])
self.assertEqual(actual, fixtures.nemo_dump_no_codestream_no_xml)
def test_codestream_0_with_j2k_file(self):
"""-c 0 should print just a single line when used on a codestream."""
sys.argv = ['', '-c', '0', self.j2kfile]
with patch('sys.stdout', new=StringIO()) as fake_out:
command_line.main()
actual = fake_out.getvalue().strip()
self.assertRegex(actual, "File: .*")