2017-08-22 1 views
0

Je crée une forme alpha à partir de certains points (exemple donné dans le code) et je veux exporter la forme vers un format graphique raster. J'ai seulement besoin de la forme, pas des marques de l'intrigue (axe, échelles ect).Exporter/Rasteriser la forme alpha en bitmap

J'ai besoin seulement du triangle résultant sur le sol blanc comme bitmap. L'échelle doit être 1 unité = 1 pixel.

x = [0 10 20 30 30 30 15]; 
y = [0 0 0 0 15 30 15]; 

shape = alphaShape (x',y'); 

plot (shape, 'FaceColor', 'black'); 

alpha shape plotted

Je n'ai pas trouvé quoi que ce soit sur la façon d'exporter des formes ou comment les pixelliser. Y'a-t'il un quelconque moyen d'y arriver?

Répondre

0

Exécutez le code suivant après le vôtre.

imgwidth = max(1, ceil(max(x) - min(x))); 
imgheight = max(1, ceil(max(y) - min(y))); 
ax = gca; 
ax.Visible = 'off'; 
ax.XTickMode = 'manual'; 
ax.YTickMode = 'manual'; 
ax.ZTickMode = 'manual'; 
ax.XLimMode = 'manual'; 
ax.YLimMode = 'manual'; 
ax.ZLimMode = 'manual'; 
ax.Position = ax.OuterPosition; 
af = gcf; 
figpos = getpixelposition(af); 
resolution=get(0, 'ScreenPixelsPerInch'); 
set(af, 'paperunits','inches', .... 
    'papersize',[imgwidth imgheight]/resolution, .... 
    'paperposition',[0 0 [imgwidth imgheight]/resolution]); 
print(af,'out.png','-dpng',['-r',num2str(resolution)],'-opengl') 

: toutes faites

  • Fetch plage de données et convertir aux dimensions de l'image.
  • Désactiver les axes et les graduations.
  • Minimiser/supprimer l'espace de remplissage entourant le contenu réel.
  • Carte 1 unité dans les données en 1 pixel dans l'image de sortie.

Les choses ne se fait pas:

  • rapport d'aspect de garantie. (Devrait fonctionner, si)

Cette capture d'écran montre la production de rapport d'aspect non-unité:

example screenshot

Références

Mathworks - Save Figure at Specific Size and Resolution

MATLAB Central - saving a figure at a set resolution

Mathworks - print

Mathworks - Save Figure with Minimal White Space