2010-09-21 35 views
8

Quando si salva una figura, quale funzione utilizza Matlab? Ad esempio, quando un utente seleziona File> Salva con nome ... e quindi seleziona .png o un altro formato di immagine, cosa succede dietro le quinte?In MATLAB, come si salva una figura come un'immagine nello stesso modo in cui si utilizza "Salva con nome ..." nella finestra della figura?

Sto chiedendo perché sto tentando di automatizzare il salvataggio, ma quando uso saveas o print, l'immagine risultante è veramente pixelata. Tuttavia, l'immagine sembra davvero buona quando salvo la figura usando il metodo descritto sopra.

Quale metodo dovrei usare per salvare la mia figura dalla riga di comando? Il metodo effettivo utilizzato dalla finestra della figura funzionerebbe, ma se voi ragazzi avete soluzioni migliori, lo appalirò!

risposta

9

La richiamata per la voce di menu "Salva come ..." richiama la funzione FILEMENUFCN con il primo argomento di input che rappresenta la maniglia della figura il menu è dentro e il secondo argomento di input è la stringa 'FileSaveAs'. Se avete la maniglia dato memorizzato nella variabile hFigure, quindi il seguente comando dovrebbe essere equivalente a fare clic sul "Salva con nome ..." voce di menu in quella finestra cifra:

>> filemenufcn(hFigure,'FileSaveAs'); 


Alcune note. ..

  • La funzione FILEMENUFCN è solo parzialmente documentato. È possibile eseguire help filemenufcn nella finestra di comando, ma non vi è alcuna voce nella documentazione in linea. In MATLAB 2009a, la funzione può essere trovata nella seguente cartella:

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

    Guardando attraverso il codice di funzione, sembra che alla fine chiama sia la funzione SAVEAS per .Fig file o la funzione HGEXPORT (con argomenti di input supplementari) per altri tipi di file.

  • Sono stato in grado di rintracciare la richiamata per la voce di menu "Salva come ..." cercando tra i bambini della finestra della figura e dei suoi menu. È possibile farlo da soli impostando root property 'ShowHiddenHandles' su 'on' e quindi attraversando lo 'Children' properties della finestra di figura e i relativi menu utilizzando il comando GET. Un'alternativa è usare il comando FINDALL, assumendo che si conoscano alcune proprietà degli oggetti che si stanno cercando. Ad esempio, questo troverà la maniglia per il menu "File" per la finestra cifra attuale:

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

    E questo troverà la maniglia per il "Salva con nome ..."Voce di menu e visualizzare la sua callback:

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

Grazie, mi ha messo sulla strada giusta Ho finito per usare questo:! http://www.mathworks.com/matlabcentral/newsreader/view_thread/239960 Impostazione options.Format = 'png' Salvato con un sacco di pixelazione – tylerthemiler

+0

@tylerthemiler: Sì, sembra che la funzione [HGEXPORT] (http://www.mathworks.com/help/techdoc /ref/hgexport.html) viene in definitiva chiamato (con alcuni argomenti di input aggiuntivi come mostrato in quel thread di newsgroup) quando si salvano immagini PNG – gnovice

+1

Grazie! QOTSA si blocca btw. – tylerthemiler

2

Non so voi, ma per me l'immagine salvata sembra carina.

Codice esempio:

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

Per impostare un utilizzo risoluzione specificata dall'utente:

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

dove SOMENUMBERis un parametro utilizzato per la risoluzione. La risoluzione finale è (SOMENUMBER * 8) x (SOMENUMBER * 6)

Problemi correlati