2010-03-19 4 views
6

In MATLAB, wie schreibt man eine Matrix in ein Bild von EPS Format?MATLAB - Bild in eine EPS-Datei schreiben

Es scheint imwrite unterstützt EPS nicht.

Konvertieren funktioniert nicht auf dem Linux-Server Ich verwende:

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

Warum?


Ich versuchte Idee gnovice unter Terminal-Modus:

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

aber ich bekam:

??? Fehler beim Verwenden von ==> imshow um 191
IMSHOW benötigt Java zum Ausführen.

Fehler in ==> study_weaker bei 122
imshow (img, 'Grenze', 'fest', ...% # Anzeige in einer Figur Fenster ohne

191 Fehler (eid, '% s erfordert Java laufen ', obere (mfilename));.

wie kann ich es beheben

+0

Versuchen Sie dasselbe mit SciPy? Zuerst in Text speichern und dann Asymptote verwenden oder den Unix-Befehl konvertieren? –

+0

Danke! konvertieren funktioniert nicht gut. – Tim

+0

Beachten Sie auch, dass Sie auch im "Terminal" -Modus mit Java laufen können. Starten Sie einfach MATLAB mit dem Flag "-nodesktop" anstelle des Flags "-nojava". –

Antwort

6

Eine mögliche Lösung ist Ihr Bild zu zeichnen IMSHOW verwenden, dann drucken sie die gesamte Figur als .eps mit? PRINT:

Ein Nachteil dieser Lösung ist, dass, wenn das Bild zu groß ist, um auf den Bildschirm zu passen, IMSHOW es verkleinert, um die Bildschirmauflösung des Bildes zu reduzieren. Sie können jedoch die endgültige Auflösung des gespeicherten Bildes mit der -r<number> option for the PRINT function einstellen. Zum Beispiel können Sie Ihre Figur als Encapsulated Stufe 2 Farbe Postscript mit einer Auflösung von 300 dpi indem Sie folgendermaßen vorgehen drucken:

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

EDIT: Wenn Sie nicht verwenden IMSHOW (entweder weil Sie don‘ t haben die Image Processing Toolbox oder weil Sie einen MATLAB-Modus verwenden, die nicht möglich ist), hier ist eine alternative Möglichkeit, die Figur zu erstellen und drucken:

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 

Sie können auch einen Blick auf this documentation zu sehen, wie Drucken funktioniert ohne Display.

+1

Um eine Änderung der Auflösung zu vermeiden, können Sie wahrscheinlich die Matrixgröße und die Achsengröße in Pixel angeben. – yuk

+0

besser machen es '-depsc2' – AVB

+0

@AB: Diese Option ist bis zu dem OP, basierend auf welcher Art von .eps-Datei sie wollen/brauchen. – gnovice

0

Es sollte mit imwrite funktionieren. Sie müssten eine Colormap hinzufügen, damit es funktioniert.

Bei den Hilfeseiten sehe ich jedoch, dass es NICHT möglich ist, mit imwrite eine EPS-Datei zu schreiben.

+0

Beispiel bitte? – Tim

0

Der folgende Code kann Ihnen helfen, Png-Datei in EPS zu konvertieren.

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