Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Save image in specific resolution in Matlab

Tags:

matlab

I'm trying for hours to simply output a certain plot in a specific resolution (320x240).

  xmax = 320; ymax = 240;
  xmin = 0; ymin = 0;
  figure;
  set(gcf,'position',[1060 860 320 240]);
  axis([xmin,xmax,ymin,ymax]);
  plot(someLinesAndPointsInTheRange320X240);
  saveas(gca,outName,'jpg');
  export_fig(outName);

Where saveas output the jpg image in an arbitrary resolution. export_fig is still showing the axes.

Adding an axis off or axis tight doesn't help either. Has anyone an idea?

UPDATE:
The problem is solved. Just for completeness here is my current solution:

  xmax = 320; ymax = 240;
  xmin = 0; ymin = 0;
  figure;
  set(gcf,'position',[1060 860 320 240]);
  subaxis(1,1,1, 'Spacing', 0.01, 'Padding', 0, 'Margin', 0);  % Removes padding
  axis([xmin,xmax,ymin,ymax]);
  plot(someLinesAndPointsInTheRange320X240);
  axis([xmin,xmax,ymin,ymax]);

  set(gca,'xtick',[],'ytick',[]); % Removes axis notation
  I = frame2im(getframe(gcf)); %Convert plot to image (true color RGB matrix).
  J = imresize(I, [240, 320], 'bicubic'); %Resize image to resolution 320x240
  imwrite(J, 'outName.jpg'); %Save image to file
like image 608
mcExchange Avatar asked Mar 19 '26 02:03

mcExchange


1 Answers

Possible solution is converting figure to image, and use imresize.

Fixing the figure position to match 320x240 resolution is possible, but using imresize is simpler (I think).

The following code sample, convert figure to image, and use imrezie to set resolution to 320x240:

figure;
% xmax = 320; ymax = 240;
% xmin = 0; ymin = 0;  
% set(gcf,'position',[1060 860 320 240]);
% axis([xmin,xmax,ymin,ymax]);

plot(sin(-pi:0.01:pi)); %Example figure
I = frame2im(getframe(gcf)); %Convert plot to image (true color RGB matrix).
J = imresize(I, [240, 320], 'bicubic'); %Resize image to resolution 320x240
imwrite(J, 'J.jpg'); %Save image to file
like image 113
Rotem Avatar answered Mar 22 '26 05:03

Rotem