如何使用MATLAB从EPS文件中提取TIFF预览?

如何使用MATLAB从EPS文件中提取TIFF预览?,matlab,tiff,eps,Matlab,Tiff,Eps,EPS文件可以包含嵌入式TIFF(很少是WMF)预览,以便在没有PostScript可用的环境中轻松渲染。(有关更多信息,请参阅。) 给定这样的EPS,如何使用MATLAB将TIFF提取到单独的文件中?%定义要创建的源EPS文件和所需的目标TIFF。 source='ode_nonneg1.eps'; 目标='ode_nonneg1.tif'; %读入EPS文件。 f=fopen(源,'rb'); d=fread(f,'uint8'); fclose(f); %检查标题以验证其是否为TIFF。

EPS文件可以包含嵌入式TIFF(很少是WMF)预览,以便在没有PostScript可用的环境中轻松渲染。(有关更多信息,请参阅。)

给定这样的EPS,如何使用MATLAB将TIFF提取到单独的文件中?

%定义要创建的源EPS文件和所需的目标TIFF。
source='ode_nonneg1.eps';
目标='ode_nonneg1.tif';
%读入EPS文件。
f=fopen(源,'rb');
d=fread(f,'uint8');
fclose(f);
%检查标题以验证其是否为TIFF。
如果~isequal(d(1:4),[197;208;211;198])
错误“这似乎不是有效的TIFF文件。”
结束
%从标题中提取TIFF数据位置。
tiffStart=sum(d(21:24).*256.^(0:3)'+1;
TIFF长度=总和(d(25:28)。*256.^(0:3)';
%写入TIFF文件。
f=fopen(目标,'w');
fwrite(f,d(tiffStart:tiffStart-1+tiffLength),'uint8','b');
fclose(f);

+1也许您可以只读取TIFF预览,而不必读取内存中的整个EPS文件(通过读取文件的前28个字节,然后使用
fseek
读取指定范围)