MATLAB - 将图像写入eps文件

时间:2010-03-19 15:46:21

标签: image matlab imagemagick eps

在MATLAB中,如何将矩阵写入EPS格式的图像?

似乎imwrite不支持EPS。

转换在我正在使用的Linux服务器上不起作用:

$ convert exploss_stumps.jpg exploss_stumps.eps
convert: missing an image filename `exploss_stumps.eps' @ convert.c/ConvertImageCommand/2838

为什么?


我在终端模式下尝试了gnovice的想法:

    figH = figure('visible','off') ;
imshow(img,'border','tight',...      %# Display in a figure window without
        'InitialMagnification',100);  %#    a border at full magnification
print(strcat(filepath,'/', dataset,'_feature_',num2str(j), '.eps'),'-depsc2');
    close(figH) ;

但是我得到了:

  

???使用==>时出错imshow at 191
  IMSHOW需要Java才能运行。
   
  ==>中的错误study_weaker at 122
      imshow(img,'border','tight',...%#在数字窗口中显示没有
   
  191错误(eid,'%s需要Java运行。',upper(mfilename));

我该如何解决?

3 个答案:

答案 0 :(得分:7)

一种可能的解决方案是使用IMSHOW绘制图像,然后使用PRINT将整个图形打印为.eps:

img = imread('peppers.png');         %# A sample image
imshow(img,'Border','tight',...      %# Display in a figure window without
       'InitialMagnification',100);  %#    a border at full magnification
print('new_image.eps','-deps');      %# Print the figure as a B&W eps

此解决方案的一个缺点是,如果图像太大而无法放在屏幕上,IMSHOW会将其缩小以适应,这会降低图像的屏幕分辨率。但是,您可以使用-r<number> option for the PRINT function调整保存图像的最终分辨率。例如,您可以通过执行以下操作将图形打印为分辨率为2 dpi的Encapsulated Level 2 Color PostScript:

print('new_image.eps','-depsc2','-r300');

编辑:如果您无法使用IMSHOW(或者因为您没有Image Processing Toolbox,或者因为您使用的是不允许的MATLAB模式它),这是创建和打印图形的另一种方法:

img = imread('peppers.png');      %# A sample image
imagesc(img);                     %# Plot the image
set(gca,'Units','normalized',...  %# Set some axes properties
        'Position',[0 0 1 1],...
        'Visible','off');
set(gcf,'Units','pixels',...      %# Set some figure properties
        'Position',[100 100 size(img,2) size(img,1)]);
print(gcf,'new_image.eps','-depsc2','-r300');  %# Print the figure

您还可以查看this documentation,了解如何在没有显示的情况下进行打印。

答案 1 :(得分:0)

它应该使用imwrite。你必须为它添加一个色彩图才能工作。

然而,在查看帮助页面时,我发现不可能使用imwrite来编写EPS文件。

答案 2 :(得分:0)

以下代码可以帮助您将png文件转换为eps。

fileName = 'FarmerStats'; % your FILE NAME as string

A = imread(fileName,'png');
set(gcf,'visible','off') %suppress figure
image(A);                
axis image               % resolution based on image
axis off                 % avoid printing axis 
set(gca,'LooseInset',get(gca,'TightInset')); % removing extra white space in figure
saveas(gcf,fileName,'epsc');   % save as COLOR eps file