@@ -84,9 +84,10 @@ def nii2jnii(filename, format="jnii", *varargin, **kwargs):
8484 dataendian = sys .byteorder
8585
8686 if nii ["hdr" ]["sizeof_hdr" ] not in [348 , 540 ]:
87- nii ["hdr" ]["sizeof_hdr" ] = struct .unpack (
88- ">I" , struct .pack ("<I" , nii ["hdr" ]["sizeof_hdr" ])
89- )[0 ]
87+ value = nii ["hdr" ]["sizeof_hdr" ]
88+ if not isinstance (value , np .ndarray ):
89+ value = np .array (value )
90+ nii ["hdr" ]["sizeof_hdr" ] = value .byteswap ()
9091
9192 if nii ["hdr" ]["sizeof_hdr" ] == 540 : # NIFTI-2 format
9293 niftiheader = niiformat ("nifti2" )
@@ -104,14 +105,15 @@ def nii2jnii(filename, format="jnii", *varargin, **kwargs):
104105 if nii ["hdr" ]["dim" ][0 ] > 7 :
105106 names = list (nii ["hdr" ].keys ())
106107 for name in names :
107- nii ["hdr" ][name ] = struct .unpack (
108- ">" + nii ["hdr" ][name ][1 :],
109- struct .pack ("<" + nii ["hdr" ][name ][1 :], nii ["hdr" ][name ]),
110- )[0 ]
108+ value = nii ["hdr" ][name ]
109+ if not isinstance (value , np .ndarray ):
110+ value = np .array (value )
111+
112+ # Swap bytes and change dtype
113+ nii ["hdr" ][name ] = value .byteswap ()
114+
111115 if nii ["hdr" ]["sizeof_hdr" ] > 540 :
112- nii ["hdr" ]["sizeof_hdr" ] = struct .unpack (
113- ">I" , struct .pack ("<I" , nii ["hdr" ]["sizeof_hdr" ])
114- )[0 ]
116+ nii ["hdr" ]["sizeof_hdr" ] = nii ["hdr" ]["sizeof_hdr" ].byteswap ()
115117
116118 type2byte = np .array (
117119 [
0 commit comments