MATLAB - записать изображение в файл eps - PullRequest
7 голосов
/ 19 марта 2010

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

Ошибка в ==> Study_weaker на 122
imshow (img, 'border', 'артефакт', ...% # Отображение в окне рисунка без

191 ошибка (eid, «% s требует Java для запуска.», Upper (mfilename));

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

Ответы [ 3 ]

7 голосов
/ 19 марта 2010

Одним из возможных решений является построение изображения с использованием IMSHOW , а затем печать всей фигуры в формате .eps с использованием 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

Одним из недостатков этого решения является то, что если изображение слишком велико, чтобы поместиться на экране, IMSHOW уменьшит его до нужного размера, что уменьшит разрешение изображения на экране. Однако вы можете отрегулировать окончательное разрешение сохраненного изображения, используя параметр -r<number> для функции ПЕЧАТЬ . Например, вы можете напечатать свою фигуру в виде цветного PostScript уровня 2 с разрешением 300 точек на дюйм, выполнив следующие действия:

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

РЕДАКТИРОВАТЬ: Если вы не можете использовать 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

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

0 голосов
/ 05 мая 2017

Следующий код может помочь вам конвертировать 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
0 голосов
/ 19 марта 2010

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

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

...