MATLAB Answers

wrong output image size using exportgraphics()

130 views (last 30 days)
Dimitrii Nikolaev
Dimitrii Nikolaev on 12 May 2020
Description
I need to export a sequence of figures with specific size in pixel. The function exportgraphics() generates a file with dimensions almost as specified, but not exactly. How can I export a png file with exportgraphics with exact with and heigth in px?
how to reproduce the problem:
1) Export .png using print('-dpng'):
figure
surf(peaks)
output_size = [500 300];
resolution = 300;
set(gcf,'paperunits','inches','paperposition',[0 0 output_size/resolution]);
print('test.png','-dpng',['-r' num2str(resolution)]);
Produces a 500x300 px test.png file.
2) Export .png using exportgraphics(...,'Resolution',...):
figure
surf(peaks)
output_size = [500 300];
resolution = 300;
set(gcf,'Units','inches','Position',[0 0 output_size/resolution]);
exportgraphics(gcf,'test_exportgraphics.png','Resolution',resolution);
Produces a 497x277 px test_exportgraphics.png file.
  1 Comment
Dimitrii Nikolaev
Dimitrii Nikolaev on 12 May 2020
getframe and print Functions
When using the getframe function (or the print function with the -r0 option) on a high-DPI system, the size of the image data array that MATLAB returns is larger than in previous releases. Additionally, the number of elements in the array might not match the figure size in pixel units. MATLAB reports the figure size based on device-independent pixels. However, the size of the array is based on the display DPI.
so how am I supposed to save my figure in desired resolution?

Sign in to comment.

Answers (1)

Harsha Priya Daggubati
Harsha Priya Daggubati on 15 May 2020
Edited: Harsha Priya Daggubati on 18 May 2020
Hi,
This link gives idea about the customisation options available with exportgraphics method in MATLA 2020a.
  3 Comments
Harsha Priya Daggubati
Harsha Priya Daggubati on 19 May 2020
Hi,
Following my reply, Currently exportgraphics saves the content closely cropped around the onscreen size(factoring in the requested output resolution), control over the generated outputs' dimensions and how much cropping is performed is not supported as of now. It might be considered in future releases.
As of now to allow the required customisations, you can continue using print.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by