WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Axes image in pseudo Vollbildmodus speichern

 

Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.04.2011, 00:47     Titel: Axes image in pseudo Vollbildmodus speichern
  Antworten mit Zitat      
Hallo,

In meinem GUI, welche eine Axes enthält, möchte ich den Inhalt der Axes als Bild speichern. Derzeit mache ich es folgendermassen:
Code:

frame = getframe(handles.axes1);
I = frame2img(frame);
imwrite(I,filename,img_type);
 

Dies funktioniert auch. Jedooch habe ich festgestellt, dass je nach Größe des figures auch das Bild ungterschiedlich groß ist. Der Workaround das Bild mittels imresize zuvor auf eine bestimmte Auflösung zu standardisieren finde ich nicht besonders schön, da das Bild interpoliert werden muss und die Qualität bei kleinem figure schlecht ist. Gibt es eine Möglichkeit den Inhalt der Axes (alles in der Axes, also auch hinzugefügte Textboxen, Linien...) z.B. immer so zu speichern als ob das GUI (die figure) im Vollbildmodus wäre. Für diesen Falll finde ich nähmlich die Größe und Qualität des exportierten Bildes ok. Natürlich möchte ich nicht das GUI mittels set auf Vollbild vergrößern. Ich habe ein wenig mit copyobj rumgespielt, jedoch kam ich irgendwie auf keinen grünen Zweig.

Vielen Dank für etwaige Hilfe. Bessere Methoden als beim pseudo Vollbild werden begrüßt.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.04.2011, 17:13     Titel:
  Antworten mit Zitat      
Hallo Sco,

COPYOBJ klingt nach dem richtigen Weg:
Code:
AxesH = axes;
plot(1:10);
text(0.5, 0.5, 'Hello world');
newFigH = figure('units', 'normalized', 'Position', [0,0,1,1]);
newAxesH = copyobj(AxesH, newFigH);
%... Und nun wieder:
frame = getframe(newAxesH);
imwrite(frame.cdata, filename, img_type);

Hilft das?

gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Themenstarter

Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 16.04.2011, 16:21     Titel:
  Antworten mit Zitat      
Hallo Jan,

Danke, ja das war was ich gesucht hatte. Das einzige was etwas nervt, dass Matlab immer bei "getframe" kurzzeitig das figure anzeigt (auch wenn auf visible off gestellt). Aber dies liegt wo in der Natur der Sache, dass bei einem Screenshot nunmal das Bild auf dem Bildschirm sein muss Smile.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.04.2011, 11:49     Titel:
  Antworten mit Zitat      
Hallo Sco,

Der PRINT-Befehl kann auch im Hintergrund arbeiten. Allerdings wird das gespeicherte Bild dann nicht pixel-genau gleich. Wenn es aber nicht auf +-1 Zeile/Spalte ankommt, wäre PRINT mit dem PNG-Format eine Idee. Falls Du UICONTROL brauchst, musst du einen Extra-Flag benutzen und für manche Formate (BMP mit 256 Farben glaube ich, gab hier im Forum mal etwas drüber) muss die Auflösung der Ausgabe über die PaperPosition (?) definiert werden...

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.