2010-03-19 7 views
6

In MATLAB, come si scrive una matrice in un'immagine del formato EPS?MATLAB - scrittura immagine in un file eps

Sembra che imwrite non supporti EPS.

Convert non funziona sul server Linux sto usando:

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

Perché?


ho cercato l'idea di gnovice in modalità terminale:

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

Comunque ho ottenuto:

??? Errore durante l'utilizzo di ==> imshow a 191
IMSHOW richiede l'esecuzione di Java.

Error in ==> study_weaker a 122
imshow (img, 'border', 'stretto', ...% # Display in una finestra di figura senza

191 errore (eid, '% s richiede Java per eseguire ', superiore (mfilename));.

come posso risolvere il problema

+0

Provare la stessa cosa con SciPy? Salva prima il testo e poi usa Asymptote o converti il ​​comando unix? –

+0

Grazie! convert non funziona bene. – Tim

+0

Si noti inoltre che è possibile eseguire anche in modalità "terminale" con Java. Basta avviare MATLAB con il flag "-nodesktop" invece del flag "-nojava". –

risposta

6

una possibile soluzione è quella di tracciare la vostra immagine utilizzando IMSHOW, quindi stampare l'intera figura come un .eps usando? PRINT:

Uno svantaggio di questa soluzione è che se l'immagine è troppo grande per adattarsi allo schermo, IMSHOW si riduce per adattarsi, riducendo la risoluzione sullo schermo dell'immagine. Tuttavia, è possibile regolare la risoluzione finale dell'immagine salvata usando -r<number> option for the PRINT function. Ad esempio, è possibile stampare la tua figura come un colore Encapsulated PostScript livello 2 con una risoluzione di 300 dpi nel modo seguente:

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

EDIT: Se non si riesce ad utilizzare IMSHOW (o perché si don' t hanno il Image Processing Toolbox o perché si sta utilizzando una modalità di MATLAB che non consente di esso), qui è un modo alternativo per creare e stampare la figura:

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 

si può anche dare un'occhiata a this documentation per vedere come la stampa funziona senza display.

+1

Per evitare la modifica della risoluzione probabilmente è possibile ottenere le dimensioni della matrice e specificare la dimensione dell'asse in pixel. – yuk

+0

rendilo meglio '-depsc2' – AVB

+0

@AB: Questa opzione dipende dall'OP, in base al tipo di file .eps che vogliono/hanno bisogno. – gnovice

0

Dovrebbe funzionare utilizzando imwrite. Dovresti però aggiungere una mappa di colori per farlo funzionare.

Tuttavia, controllando le pagine di aiuto vedo che NON è possibile usare imwrite per scrivere un file EPS.

+0

esempio, per favore? – Tim

0

Il seguente codice può aiutare a convertire il file png in 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