function [count, errmsg]= nano2write(filename, header, img) %NANO2WRITE Write the header and the image to a nanoscope 2 file. % % [COUNT, ERRMSG] = NANO2WRITE(FILENAME, HEADER, IMAGE) % % Return the number of elements successfully written. % and an error message if occour. % % Before to write the file, the image is -90 degree % rotated and the bytes are flipped in order to be % compatible with the nanoscope. % % % Claudio October 11, 1995. % % Copyright (c) 1995 by Claudio Rivetti and Mark Young % claudio@alice.uoregon.edu, mark@alice.uoregon.edu % global Original_NANO2_header HEADER_SIZE_NS2 = 2048; fp = fopen(filename, 'w'); if fp == -1 errmsg='Can not create file'; return; end img=rot90(img, -1); h=Original_NANO2_header; h=setparameter(h, 'num_samp', size(img,1)); h=setparameter(h, 'scan_sz', scansize(header)); h=setparameter(h, 'text', getparameter(header, 'Note',1)); h=strrep(h, ': ', ' = '); h=strrep(h, [13 10 92], [13 10]); h=h(3:length(h)); hlen=length(h); if hlen > HEADER_SIZE_NS2 h=h(1:HEADER_SIZE_NS2); else h=[h zeros(1,HEADER_SIZE_NS2-hlen)]; end count_header = fwrite(fp, h', 'char'); count_img = fwrite(fp, img, 'short', 'vaxd'); em=ferror(fp, 'clear'); fclose(fp); count = prod(size(h)) + prod(size(img)); if count ~= count_header + count_img errmsg=em; end return