MATLAB-запись изображения в файл eps

в MATLAB, как вы пишете матрицу в образ EPS?

кажется imwrite не поддерживает EPS.

Convert не работает на сервере 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 в 191
IMSHOW требует Java для запуска.

Ошибка in ==> study_weaker at 122
imshow (img, 'граница','туго',... %# Отображение в окне рисунка без

191 ошибка(eid, " %s требует запуска Java.', upper (mfilename));

как я могу это исправить?

3 ответов


одним из возможных решений является построение изображения с помощью IMSHOW, затем выведите всю цифру как a .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> опция для функции печати. Например, можно напечатать рисунок в виде инкапсулированного постскриптума цвета уровня 2 с разрешением 300 dpi, выполнив следующие действия:

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

EDIT: если вы не можете использовать IMSHOW (либо потому, что у тебя нет Обработка Изображений 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

вы также можете взглянуть на документация чтобы увидеть, как работает печать без дисплея.


Он должен работать с помощью imwrite. Вам нужно будет добавить цветовую карту, чтобы она работала.

однако, проверяя страницы справки, я вижу, что невозможно использовать imwrite для записи файла EPS.


следующий код может помочь вам преобразовать файл 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