2010-09-21 6 views
8

Welche Funktion verwendet Matlab beim Speichern einer Figur? Wenn beispielsweise ein Benutzer Datei> Speichern unter ... auswählt und dann .png oder ein anderes Bildformat auswählt, was passiert hinter den Kulissen?In Matlab, wie speichern Sie eine Figur als Bild auf die gleiche Weise wie mit "Speichern unter ..." im Figurenfenster?

Ich frage, weil ich versuche, das Speichern zu automatisieren, aber wenn ich saveas oder print verwende, ist das resultierende Bild wirklich pixelig. Das Bild sieht jedoch sehr gut aus, wenn ich die Figur mit der oben beschriebenen Methode speichere.

Mit welcher Methode kann ich meine Figur von der Befehlszeile aus speichern? Die tatsächliche Methode, die das Zahlenfenster verwendet, würde funktionieren, aber wenn Sie bessere Lösungen haben, würde ich es schätzen!

Antwort

9

Der Rückruf für den Menüpunkt "Speichern unter ..." ruft die Funktion FILEMENUFCN auf, wobei das erste Eingabeargument das Handle der Figur im Menü ist ist in und das zweite Eingabeargument ist die Zeichenfolge 'FileSaveAs'. Wenn Sie die Zahl Griff in der Variablen hFigure gespeichert haben, dann sollten Sie den folgenden Befehl „Speichern unter ...“ Menüpunkt in dieser Figur Fenster zu klicken gleichwertig sein:

>> filemenufcn(hFigure,'FileSaveAs'); 


Ein paar Anmerkungen. ..

  • Die Funktion FILEMENUFCN ist nur teilweise dokumentiert. Sie können help filemenufcn im Befehlsfenster tun, aber es gibt keinen Eintrag dafür in der Online-Dokumentation. In MATLAB 2009a kann die Funktion in dem folgenden Ordner:

    C:\Program Files\MATLAB\R2009a\toolbox\matlab\uitools\filemenufcn.m 
    

    den Funktionscode der Suche durch, scheint es, dass es schließlich ruft entweder die Funktion SAVEAS für Dateien oder die Funktion HGEXPORT (mit zusätzlichen Eingabeargumenten .fig) für andere Dateitypen.

  • Ich konnte den Rückruf für den "Speichern unter ..." - Menüpunkt suchen, indem ich die untergeordneten Elemente des Figurenfensters und dessen Menüs durchsuche. Sie können dies selbst tun, indem Sie root property 'ShowHiddenHandles' auf 'on' setzen und dann mit dem Befehl GET durch das 'Children' properties des Figurenfensters und dessen Menüs verfahren. Eine Alternative ist die Verwendung des Befehls FINDALL, vorausgesetzt, Sie kennen einige Eigenschaften der Objekte, die Sie suchen. Zum Beispiel wird dies den Griff in die Menü „Datei“ für das aktuelle Bild Fenster finden:

    >> hFileMenu = findall(gcf,'Label','&File'); 
    

    Und das wird den Griff in die „Save As finden ..."Menüpunkt und seine Callback-Anzeige:

    >> hSaveAs = findall(hFileMenu,'Label','Save &As...'); 
    >> get(hSaveAs,'Callback') 
    ans = 
    filemenufcn(gcbf,'FileSaveAs') 
    
+1

Dank, du hast mich auf dem richtigen Weg habe ich am Ende mit dieser: http://www.mathworks.com/matlabcentral/newsreader/view_thread/239.960 Setting 'png' options.Format = es ohne viel pixelation gespeichert – tylerthemiler

+0

@tylerthemiler. Ja, scheint es, dass die Funktion [HGEXPORT] (http://www.mathworks.com/help/techdoc /ref/hgexport.html) wird schließlich beim Speichern von PNG-Bildern (mit einigen zusätzlichen Eingabeargumenten, wie in diesem Newsgroup-Thread gezeigt) aufgerufen. – gnovice

+1

Danke! QOTSA rockt übrigens. – tylerthemiler

2

Ich weiß nicht über dich, aber für mich sieht das gespeicherte Bild gut aus.

Code-Beispiel:

... create some figure ... 
saveas(gcf, 'some_figure.png'); 

Um einen Benutzer spezifizierten Auflösung verwenden gesetzt:

print(gcf,'some_figure','-dpng','-rSOMENUMBER') 

wo ein Parameter für die Auflösung verwendet SOMENUMBERis. Die endgültige Auflösung ist (SOMENUMBER * 8) x (SOMENUMBER * 6)

Verwandte Themen