Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MATLAB - write image into an eps file

In MATLAB, how do you write a matrix into an image of EPS format?

It seems imwrite does not support EPS.

Convert is not working on the Linux server I am using:

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

Why?


I tried gnovice's idea under terminal mode:

    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) ;

However I got:

??? Error using ==> imshow at 191
IMSHOW requires Java to run.

Error in ==> study_weaker at 122
imshow(img,'border','tight',... %# Display in a figure window without

191 error(eid,'%s requires Java to run.',upper(mfilename));

How can I fix it?

like image 509
Tim Avatar asked Mar 19 '10 15:03

Tim


People also ask

How do I save an image as a EPS file?

You can also use Adobe Photoshop to export to EPS. Click “File,” “Save As” and select “Photoshop EPS.” Select the desired export options, such as creating a preview image, changing the file encoding or modifying color options. Click “OK” to export.

How do I save an EPS file in Matlab?

Save Figure as EPS FileCreate a bar chart and save it as an EPS file. Specify the 'epsc' driver to save it in color. saveas saves the bar chart as Barchart. eps .

How do I convert a file to EPS?

Use any graphic editing software that supports vector files, e.g. Adobe Illustrator, Inkscape or Corel Draw. Open your file, click “Save as”, select EPS, and click “Save”. It doesn't get easier than that!

Can you convert a JPG to an EPS?

You can place the jpg in illustrator, do a save as and choose . eps. Often when people ask for . eps files, they want them to be all vector paths.


1 Answers

One possible solution is to plot your image using IMSHOW, then print the entire figure as a .eps using PRINT:

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

One drawback to this solution is that if the image is too big to fit on the screen, IMSHOW will shrink it to fit, which will reduce the on-screen resolution of the image. However, you can adjust the final resolution of the saved image using the -r<number> option for the PRINT function. For example, you can print your figure as an Encapsulated Level 2 Color PostScript with a resolution of 300 dpi by doing the following:

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

EDIT: If you are unable to use IMSHOW (either because you don't have the Image Processing Toolbox or because you are using a MATLAB mode that doesn't allow it), here is an alternative way to create and print the figure:

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

You can also take a look at this documentation to see how printing works without a display.

like image 178
gnovice Avatar answered Sep 22 '22 23:09

gnovice