X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=utilities_ESRF%2Fwriteheader.m;fp=utilities_ESRF%2Fwriteheader.m;h=7a4ebcf08406fb8a484b7ae2e3260ce9a4d26020;hp=0000000000000000000000000000000000000000;hb=99b9890c11d31f9ae22dd481873e01c708175073;hpb=d0401c49b6b7511cfdaa0534b78bd3c5b2b0637a diff --git a/utilities_ESRF/writeheader.m b/utilities_ESRF/writeheader.m new file mode 100644 index 0000000..7a4ebcf --- /dev/null +++ b/utilities_ESRF/writeheader.m @@ -0,0 +1,44 @@ +## function header=writeheader(sizes,datatype,nbytes,nimage) +## used by edfwrite +## sizes is size(image to be written), cf. Dim_1 and Dim_2 +## datatype is string, cf. DataType +## nbytes is number of bytes used for each written element +## nimage is probably number of the image, used for writing multiple images in a single file? +## origin: peter +## 2011-05-18 PC +## * correct error in number of blanks to add to get multiple of 512 bytes header +## * avoid sprintf, use double quotes + +function header = writeheader(sizes,datatype,nbytes,nimage,headstruct) + + header = sprintf("%s\n","{"); + header = [header headerstring("HeaderID","EH:000001:000000:000000","string")]; + header = [header headerstring("Image",nimage,"integer")]; + header = [header headerstring("ByteOrder","HighByteFirst","string")]; + header = [header headerstring("DataType",datatype,"string")]; + header = [header headerstring("Dim_1",sizes(1),"integer")]; + header = [header headerstring("Dim_2",sizes(2),"integer")]; + header = [header headerstring("Size",nbytes*sizes(1)*sizes(2),"integer")]; + header = [header headerstring("Date",date,"string")]; + + if ((nargin == 5) && (isstruct(headstruct) == 1)) + ## If the structure exists, write the fields to the file + if (!isempty(headstruct)) + names = fieldnames(headstruct); + for ii=1:length(names), + header = [header sprintf("%s",headerstring(names{ii},getfield(headstruct,names{ii}),... + class(getfield(headstruct,names{ii}))))]; + endfor + endif + endif + + ## Fill to next multiple of 512 + lnspace = mod(length(header)+2, 512); + if lnspace > 0 + lnspace = 512-lnspace; + endif + header = [header blanks(lnspace) "}\n"]; +endfunction + + +