import gdcm
import os,sys
def TestKakadu(filename, kdu_expand):
fn = gdcm.Filename(filename)
testdir = fn.GetPath()
testbasename = fn.GetName()
ext = fn.GetExtension()
kakadu_path = os.path.dirname( kdu_expand )
kdu_args = ' -quiet -i '
output_dcm = testdir + '/kakadu/' + testbasename
output_j2k = output_dcm + '.j2k'
output_ppm = output_dcm + '.ppm' output_raw = output_dcm + '.rawl' kdu_expand += kdu_args + output_j2k + ' -o ' + output_raw
executable_output_path = gdcm.GDCM_EXECUTABLE_OUTPUT_PATH
gdcmraw = executable_output_path + '/gdcmraw'
outputfilename = output_j2k
gdcmraw_args = ' -i ' + filename + ' -o ' + outputfilename
gdcmraw += gdcmraw_args
ret = os.system( gdcmraw )
os.environ["LD_LIBRARY_PATH"]=kakadu_path
ret = os.system( kdu_expand )
dd_cmd = 'dd bs=15 skip=1 if=%s of = %s'%(output_ppm,output_raw)
md5 = gdcm.Testing.ComputeFileMD5( output_raw )
ref = gdcm.Testing.GetMD5FromFile(filename)
retval = 0
if ref != md5:
img = gdcm.ImageReader()
img.SetFileName( filename )
img.Read()
if img.GetImage().GetDimension(2) != 1:
print("Test do not handle multiframes for now")
elif img.GetImage().GetPixelFormat().GetSamplesPerPixel() != 1:
print("Test do not handle RGB for now. kdu_expand expand as RRR GGG BBB by default")
else:
print("md5 are different: %s should be: %s for file %s"%(md5,ref,filename))
print("raw file was: %s"%(output_raw))
retval = 1
return retval
if __name__ == "__main__":
success = 0
d = gdcm.Directory()
tempdir = gdcm.Testing.GetTempDirectory()
j2ksubdir = 'TestImageChangeTransferSyntax2' nfiles = d.Load( tempdir + '/' + j2ksubdir )
md = gdcm.System.MakeDirectory( tempdir + '/' + j2ksubdir + '/kakadu' );
if not md:
sys.exit(1)
files = d.GetFilenames()
for i in range(0,nfiles):
filename = files[i]
success += TestKakadu( filename, os.sys.argv[1] )
sys.exit(success)