2010-03-19 2 views
6

В MATLAB, как вы пишете матрицу в изображение формата 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 при 122
imshow (IMG, 'границы', 'плотный', ...% # Отображение в окне фигуры без

191 ошибки (Ид, '% s требует Java для запуска ', верхний (mfilename)).

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

+0

Попробуй же использовать SciPy? Сначала сохраните текст, а затем используйте Asymptote или конвертируйте команду unix? –

+0

Спасибо! конвертер не работает. – Tim

+0

Обратите также внимание на то, что вы также можете работать в режиме «терминала» с Java. Просто запустите MATLAB с флагом «-nodesktop» вместо флага «-nojava». –

ответ

6

Одно из возможных решений для построения вашего изображения с помощью 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> option for the PRINT function. Например, вы можете напечатать рисунок как инкапсулированный Level 2 Color PostScript с разрешением 300 точек на дюйм, выполнив следующие действия:

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

EDIT: Если вы не можете использовать 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

Чтобы избежать изменения разрешения, вы, вероятно, можете получить размер матрицы и указать размер оси в пикселях. – yuk

+0

лучше сделать его '-depsc2' – AVB

+0

@AB: Этот параметр зависит от OP, в зависимости от того, какой тип файла .eps им нужен/нужен. – gnovice

0

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

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

+0

пример, пожалуйста? – Tim

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 
Смежные вопросы