rawwrite.m
上传用户:zlding2008
上传日期:2013-05-13
资源大小:1914k
文件大小:1k
源码类别:

2D图形编程

开发平台:

Matlab

  1. function rawwrite(X,MAX,filename);
  2. % RAWWRITE Write a Portable Bitmap file, or a raw file.
  3. %       RAWWRITE(X,MAX,'imagefile.raw') writes a "raw" image file
  4. %       RAWWRITE(X,MAX,'imagefile.pgm') writes a "pgm" (portable gray map) image
  5. %       MAX is the maximum intensity value used, must be smaller or
  6. %       equal to 255. If bigger, 255 is automatically used. 
  7. %
  8. %       See also RAWREAD, IMWRITE, IMREAD, IMAGE, COLORMAP.
  9. %      Chenyang Xu and Jerry L. Prince, 4/1/95, 6/17/97
  10. %      Copyright (c) 1995-97 by Chenyang Xu and Jerry L. Prince
  11. %      Image Analysis and Communications Lab, Johns Hopkins University
  12. disp('RawWrite');
  13. dot = max(find(filename == '.'));
  14. suffix = filename(dot+1:dot+3);
  15. if strcmp(suffix,'pgm') | strcmp(suffix,'raw')
  16.    disp(sprintf('nopens %s filen',filename));
  17.    fp = fopen(filename,'wb','b');  % "Big-endian" byte order.
  18.    
  19.    if (fp<0)
  20.       error(['Cannot open ' filename '.']);
  21.    end
  22.    [height,width] = size(X);
  23.    if strcmp(suffix,'pgm')
  24.    % Write and crack the header
  25.    
  26.       fprintf(fp,'P5n'); % pgm magic number : P5
  27.       fprintf(fp, '%d %dn', [height width]);
  28.       if (MAX>255)
  29. MAX = 255;
  30.       end
  31.       fprintf(fp, '%dn', MAX);
  32.    end
  33.    % Read the image
  34.    disp(' Writes image data ...');
  35.    l = fwrite(fp,X,'uchar');
  36.    if l ~= height*width, l, error('HSI image file is wrong length'), end
  37.    
  38.    fclose(fp);
  39.    
  40.    disp('end');
  41. else
  42.    error('Image file name must end in ''raw'' or ''pgm''.')
  43. end